Sha256: 461bcb89cb0bddaa63873c1ea330eed496b1c4044dd1aa3f139d3c1c05412fb1

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require "Fraccion.rb"
require "Matriz.rb"
require "Matriz_densa.rb"
require "Matriz_dispersa.rb"
class Dsl
  attr_accessor :operando, :operacion, :modo_resultado, :tipo_matriz
  
  def initialize (operacion, &block)
    raise ArgumentError , 'Operacion no valida' unless operacion.is_a? String
    
    @operacion = operacion
    @operando = []
    @tipo_matriz = ""
    @modo_resultado = ""
    
    case operacion
    when "suma"
      @operacion = "suma"
    when "resta"
      @operacion = "resta"
    when "multiplicacion"
      @operacion = "multiplicacion"
    end
    
    if block_given?  
      if block.arity == 1
        yield self
      else
        instance_eval &block 
      end
    end
    
    case @modo_resultado
    when "consola"
      puts self
    when "fichero"
      File.open('resultado.txt','a+') do |x|
        x.puts self
      end
      puts self
    end
  end
  
  def operando(matriz)
    raise ArgumentError , 'No se ha introducido una matriz' unless matriz.is_a? Array
    
    case @tipo
    when "densa"
      @operando << Matriz_densa.new(matriz)
    when "dispersa"
      @operando << Matriz_dispersa.new(matriz)
    end
    
    
  end
  
  def option(cadena)
        raise ArgumentError , 'Opcion no valida' unless cadena.is_a? String
        opcion = cadena.downcase
        case opcion
         when "consola","fichero"  
           @modo = opcion
         when "dispersa","densa" 
           @tipo = opcion
        end
  end
  
  def ejecucion
    mostrar = []
    
    case @operacion
    when "suma"
      mostrar = (@operando[0] + @operando[1]).matriz
    when "resta"
      mostrar = (@operando[0] - @operando[1]).matriz
    when "multiplicacion"
      mostrar = (@operando[0] * @operando[1]).matriz
    end
    
    mostrar
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
prct09-1.1.0 lib/Dsl.rb