Sha256: 138af0c3d62de58fc18b07097f4596dc38f3752559d6d755defbb9f52c30cd65

Contents?: true

Size: 1.96 KB

Versions: 1

Compression:

Stored size: 1.96 KB

Contents

class DSLMenu  
    attr_accessor :nombre, :platos, :menu
    
    def initialize(nombre, &block)
        @nombre = nombre
        @platos = []
        @menu = []

        if block_given?
            if block.arity == 1
                yield self
            else
                instance_eval(&block)
            end
        end
    end

    def to_s
        output = "\n\n\n" + @nombre.upcase
        output << "\n#{'='*@nombre.size}\n\n "
        @menu.each do |menu|
            output << "#{menu}"
        end
        output << "\n\n"
        @platos.each_with_index do |plato, i|
            output << "[#{i + 1}] #{plato}\n"
        end

        output << "\n\n\n"
        output
    end

    def plato(nombre, opciones = {})
        plato = nombre
        plato << "\n| contiene: #{opciones[:descripcion]} " if opciones[:descripcion]
        plato << "  | valor nutricional: #{opciones[:nutricional]}" if opciones[:nutricional]
        plato << "  | impacto ambiental: #{opciones[:ambiental]}" if opciones[:ambiental]
        plato << "\n\n #{opciones[:precio]} €\n" if opciones[:precio]
        @platos << plato
    end

    def menu(descripcion, opciones= {})
        menu = descripcion
        menu << "\n#{'-'*descripcion.size}"
        menu << "\n\n #{opciones[:precio]} €" if opciones[:precio]
        @menu << menu
    end
end

combo1 = DSLMenu.new("Combinado nº 1") do
    menu "hamburguesa con queso, papas, refresco", :precio => 7.59
    plato "hamburguesa especial de la casa", 
            :descripcion => "carne de vaca, huevo, bacon, tomate, lechuga",
            :nutricional => "490 kcal",
            :ambiental =>   "170 gei 240 m²",
            :precio => 4.25  
    plato "papas fritas", 
            :descripcion => "papas, aceite, sal",
            :nutricional => "570 kcal",
            :ambiental =>   "90 gei 130 m²",
            :precio => 1.75  
    plato "refresco",
            :nutricional => "120 kcal",
            :precio => 1.50
            
end


puts combo1

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lppP6lu0101027005-1.0.0 lib/DSLMenu.rb