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
|
8
|
# File 'lib/shokkenki/term/hash_term.rb', line 8
def self.type; :hash; end
|
Instance Method Details
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
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
|
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
|