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