class HashBuilder
HashBuilder
takes a procedure and builds a Hash
out of it.
The procedure must conform to a set of rules to be useful in this respect. They must either take an argument and use that argument to set values, or if no argument is taken then ‘#instance_eval` is used to evaluate the procedure such that each method represents a key.
Public Class Methods
new(hash={}, &block)
click to toggle source
# File lib/standard/facets/hash_builder.rb, line 11 def initialize(hash={}, &block) @hash = hash case block.arity when 0 instance_eval(&block) else block.call(self) end end
Public Instance Methods
method_missing(s, *a, &b)
click to toggle source
# File lib/standard/facets/hash_builder.rb, line 28 def method_missing(s, *a, &b) m = s.to_s if a.empty? && !b @hash[m.to_sym] else if b @hash[m.chomp('=').to_sym] = HashBuilder.new(&b).to_h else if a.size > 1 @hash[m.chomp('=').to_sym] = a else @hash[m.chomp('=').to_sym] = a.first end end end end
to_h()
click to toggle source
# File lib/standard/facets/hash_builder.rb, line 23 def to_h @hash end