class Morfo::Builder
Attributes
definitions[R]
Public Class Methods
new(definitions)
click to toggle source
# File lib/morfo/builder.rb, line 3 def initialize(definitions) @definitions = definitions end
Public Instance Methods
build()
click to toggle source
# File lib/morfo/builder.rb, line 7 def build # WTF??? `definitions` is not accessible inside class # so this javascript technique is necesseray tmp_definitions = definitions.map { |h| Morfo::Tools::ExtendedHash.symbolize_keys(h) } Class.new(Morfo::Base) do tmp_definitions.each do |definition| f = field(*definition[:field]) if definition[:from] f = f.from(*definition[:from]) end if definition[:calculated] base_hash = Morfo::Tools::BaseKeys.new(definition[:calculated]).build f = f.calculated { |r| definition[:calculated] % base_hash.merge(Morfo::Tools::FlattenHashKeys.new(r).flatten) } end if definition[:transformed] f = f.transformed { |v| definition[:transformed] % {value: v} } end end end end