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 |