Class: Krackle::Parser

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

Instance Method Summary collapse

Constructor Details

#initialize(tokens) ⇒ Parser

Returns a new instance of Parser.



38
39
40
# File 'lib/krackle.rb', line 38

def initialize(tokens)
  @tokens = tokens
end

Instance Method Details

#parse(hash) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/krackle.rb', line 42

def parse(hash)
  nodes = Array[hash]
  # p tokenize

  @tokens.each do |(token, value)|
    # p [token, value], nodes, "-"*30
    case token
    when :KEY
      nodes = nodes.map{ |node| node[value] }.compact
    when :COLLECTION
      if value
        nodes = nodes.map{ |node| node[value] }.compact
      else
        nodes = nodes.flatten.compact
      end
    end
  end

  nodes
end