class SimpleFactory::HashDefinitions
Attributes
samples[R]
Public Class Methods
new(hash)
click to toggle source
# File lib/simple_factory/hash_definitions.rb, line 7 def initialize(hash) if (samples = (hash[:_sample] || hash['_sample'])) @samples = samples.map {|sample| parse_attrs(sample) } else @samples = [parse_attrs(hash)] end end
Private Instance Methods
parse_attrs(hash)
click to toggle source
# File lib/simple_factory/hash_definitions.rb, line 16 def parse_attrs(hash) hash.map do |name, value| Definition.new(name.to_sym, parse_value(value)) end end
parse_hash_value(value)
click to toggle source
# File lib/simple_factory/hash_definitions.rb, line 31 def parse_hash_value(value) if (samples = value[:_sample] || value['_sample']) unless Array === samples raise TypeError, "`_sample`'s value must be an Array" end lambda { samples.sample } elsif (sequence = value[:_sequence] || value['_sequence']) seq = Sequence.new lambda { sequence.gsub(/%{i}/, seq.next.to_s) } else value end end
parse_value(value)
click to toggle source
# File lib/simple_factory/hash_definitions.rb, line 22 def parse_value(value) case value when Hash parse_hash_value(value) else value end end