Class: Shokkenki::Term::JsonPathsTerm
- Inherits:
-
Term
show all
- Defined in:
- lib/shokkenki/term/json_paths_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
Returns a new instance of JsonPathsTerm.
24
25
26
27
28
29
30
|
# File 'lib/shokkenki/term/json_paths_term.rb', line 24
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
14
15
16
17
18
19
20
21
22
|
# File 'lib/shokkenki/term/json_paths_term.rb', line 14
def self.from_json json
values = json[:value].inject({}) do |hash, kv|
key, value = *kv
hash[key] = TermFactory.from_json(value)
hash
end
new values
end
|
12
|
# File 'lib/shokkenki/term/json_paths_term.rb', line 12
def self.type; :json_paths; end
|
Instance Method Details
39
40
41
42
43
44
45
|
# File 'lib/shokkenki/term/json_paths_term.rb', line 39
def example
@value.inject({}) do |generated, keyvalue|
path, term = *keyvalue
generated.deep_merge! JsonPathExample.new(path, term).to_example
generated
end.to_json
end
|
#match?(compare) ⇒ Boolean
32
33
34
35
36
37
|
# File 'lib/shokkenki/term/json_paths_term.rb', line 32
def match? compare
compare && @value.all? do |key, value|
path = JsonPath.new(key)
value.match? path.on(compare)
end
end
|
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/shokkenki/term/json_paths_term.rb', line 47
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
|