class Transmogrifier::Engine
Public Class Methods
from_rules_array(rules_array, migrators=[])
click to toggle source
# File lib/transmogrifier/engine.rb, line 3 def self.from_rules_array(rules_array, migrators=[]) migrator_map = migrators.reduce({}) do |memo, migrator| memo[migrator.name] = migrator memo end new( rules_array.map do |rule| type = rule["type"].capitalize selector = rule["selector"] options = [ rule["object"], rule["from"], rule["to"], rule["name"], rule["pattern"], rule["replacement"], retrieve_migrator(rule["migrator"], migrator_map) ].compact Transmogrifier::Rules.const_get(type).new(selector, *options) end ) end
new(rules=[])
click to toggle source
# File lib/transmogrifier/engine.rb, line 26 def initialize(rules=[]) @rules = rules end
Private Class Methods
retrieve_migrator(migrator_name, migrators)
click to toggle source
# File lib/transmogrifier/engine.rb, line 41 def self.retrieve_migrator(migrator_name, migrators) return nil if migrator_name.nil? raise "Unknown Migrator #{migrator_name}" unless migrators[migrator_name] migrators[migrator_name] end
Public Instance Methods
add_rule(rule)
click to toggle source
# File lib/transmogrifier/engine.rb, line 30 def add_rule(rule) @rules << rule end
run(input_hash)
click to toggle source
# File lib/transmogrifier/engine.rb, line 34 def run(input_hash) output_hash = input_hash.dup @rules.each { |rule| output_hash = rule.apply!(output_hash) } output_hash end