Class: Shokkenki::Term::HashTerm

Inherits:
Term show all
Defined in:
lib/shokkenki/term/hash_term.rb

Instance Attribute Summary

Attributes inherited from Term

#value

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Term

#to_shokkenki_term, #type

Constructor Details

#initialize(values) ⇒ HashTerm

Returns a new instance of HashTerm.



20
21
22
23
24
25
26
# File 'lib/shokkenki/term/hash_term.rb', line 20

def initialize values
  @value = values.inject({}) do |mapped, kv|
    k,v = *kv
    mapped[k] = v.to_shokkenki_term
    mapped
  end
end

Class Method Details

.from_json(json) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/shokkenki/term/hash_term.rb', line 10

def self.from_json json
  values = json[:value].inject({}) do |hash, kv|
    key, value = *kv
    hash[key.to_sym] = TermFactory.from_json(value)
    hash
  end

  new values
end

.typeObject



8
# File 'lib/shokkenki/term/hash_term.rb', line 8

def self.type; :hash; end

Instance Method Details

#exampleObject



41
42
43
44
45
46
47
# File 'lib/shokkenki/term/hash_term.rb', line 41

def example
  @value.inject({}) do |hash, kv|
    key, value = *kv
    hash[key] = value.example
    hash
  end
end

#match?(compare) ⇒ Boolean

Returns:

  • (Boolean)


49
50
51
52
53
# File 'lib/shokkenki/term/hash_term.rb', line 49

def match? compare
  compare && @value.all? do |key, value|
    value.match? compare.to_hash[key]
  end
end

#to_hashObject



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/shokkenki/term/hash_term.rb', line 28

def to_hash
  mapped_values = @value.inject({}) do |mapped, keyvalue|
    key, value = *keyvalue
    mapped[key] = value.respond_to?(:to_hash) ? value.to_hash : value
    mapped
  end

  {
    :type => type,
    :value => mapped_values
  }
end