Class: Transmogrifier::Engine

Inherits:
Object
  • Object
show all
Defined in:
lib/transmogrifier/engine.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rules = []) ⇒ Engine

Returns a new instance of Engine.



26
27
28
# File 'lib/transmogrifier/engine.rb', line 26

def initialize(rules=[])
  @rules = rules
end

Class Method Details

.from_rules_array(rules_array, migrators = []) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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

Instance Method Details

#add_rule(rule) ⇒ Object



30
31
32
# File 'lib/transmogrifier/engine.rb', line 30

def add_rule(rule)
  @rules << rule
end

#run(input_hash) ⇒ Object



34
35
36
37
38
# 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