Class: Snuffle::Element::Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/snuffle/elements/hash.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node) ⇒ Hash

Returns a new instance of Hash.



13
14
15
# File 'lib/snuffle/elements/hash.rb', line 13

def initialize(node)
  self.node = node
end

Instance Attribute Details

#nodeObject

Returns the value of attribute node.



7
8
9
# File 'lib/snuffle/elements/hash.rb', line 7

def node
  @node
end

Class Method Details

.materialize(nodes = []) ⇒ Object



9
10
11
# File 'lib/snuffle/elements/hash.rb', line 9

def self.materialize(nodes=[])
  nodes.each.map{|hash_node| new(hash_node) }.select{|h| h.pairs.present?}
end

Instance Method Details

#inspectObject



29
30
31
# File 'lib/snuffle/elements/hash.rb', line 29

def inspect
  pairs
end

#keysObject



21
22
23
# File 'lib/snuffle/elements/hash.rb', line 21

def keys
  node.children.map{ |child| child.children.first && child.children.first.name }
end

#pairsObject



17
18
19
# File 'lib/snuffle/elements/hash.rb', line 17

def pairs
  @pairs ||= keys.zip(values).inject({}){|hash, pair| hash[pair[0]] = pair[1]; hash}
end

#valuesObject



25
26
27
# File 'lib/snuffle/elements/hash.rb', line 25

def values
  node.children.map{ |child| child.children.last && child.children.last.name }.map(&:to_s).sort
end