Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Options
- def initialize(*opts)
- @opts = opts
- vals = {}
- class <<self; self end.class_eval do
- opts.each do |opt|
- define_method(opt) do |*args|
- if args.size == 0
- vals[opt]
- else
- vals[opt] = *args
- end
- end
- end
- end
- @vals = vals
- end
- def run(&blk)
- instance_eval &blk
- self
- end
- def to_a
- @vals.values_at(*@opts)
- end
- end
- class YourClass
- def initialize
- @price = {}
- end
- def set_price(&blk)
- @price[:apples], @price[:oranges] = *Options.new(:apples,:oranges).run(&blk)
- self
- end
- end
- YourClass.new.set_price do
- apples 5
- oranges 2
- end
Add Comment
Please, Sign In to add comment