jsonpath 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/jsonpath.rb +1 -1
- data/lib/jsonpath/enumerable.rb +11 -5
- data/lib/jsonpath/version.rb +1 -1
- data/test/test_jsonpath.rb +51 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa8657a28248b15d9ae03ef56bbfa2a436fec517
|
4
|
+
data.tar.gz: 41e9c32a10b1e26423b7833cb547f2d475798225
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b505037a9c8d5d7cf2be89838edb95a7f2ac31f097b8ff81c9c16b7b6205ce49cf19c4e297cb4a83be48b1dbcc026c85ae875c9bd93b7b40a888c09714e58a2b
|
7
|
+
data.tar.gz: 65a6f59db06dac30434fbf113f12476ef7c944b47589cceee468e4984566ce8157d7730d91e43d1d6d3d639995337eae3065ef715ec2a8e362e260f71c8c5a41
|
data/lib/jsonpath.rb
CHANGED
data/lib/jsonpath/enumerable.rb
CHANGED
@@ -66,14 +66,20 @@ class JsonPath
|
|
66
66
|
|
67
67
|
def handle_question_mark(sub_path, node, pos, &blk)
|
68
68
|
case node
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
when Array
|
70
|
+
node.size.times do |index|
|
71
|
+
@_current_node = node[index]
|
72
|
+
# exps = sub_path[1, sub_path.size - 1]
|
73
|
+
# if @_current_node.send("[#{exps.gsub(/@/, '@_current_node')}]")
|
74
|
+
if process_function_or_literal(sub_path[1, sub_path.size - 1])
|
75
|
+
each(@_current_node, nil, pos + 1, &blk)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
when Hash
|
72
79
|
if process_function_or_literal(sub_path[1, sub_path.size - 1])
|
73
80
|
each(@_current_node, nil, pos + 1, &blk)
|
74
81
|
end
|
75
|
-
|
76
|
-
else
|
82
|
+
else
|
77
83
|
yield node if process_function_or_literal(sub_path[1, sub_path.size - 1])
|
78
84
|
end
|
79
85
|
end
|
data/lib/jsonpath/version.rb
CHANGED
data/test/test_jsonpath.rb
CHANGED
@@ -245,7 +245,7 @@ class TestJsonpath < MiniTest::Unit::TestCase
|
|
245
245
|
'id' => '123'
|
246
246
|
}
|
247
247
|
}
|
248
|
-
assert_equal [{ 'type' => 'users', 'id' => '123' }], JsonPath.new("$.[?(@.type == 'users')]").on(data)
|
248
|
+
assert_equal [{ 'type' => 'users', 'id' => '123' }], JsonPath.new("$.data[?(@.type == 'users')]").on(data)
|
249
249
|
assert_equal [], JsonPath.new("$.[?(@.type == 'admins')]").on(data)
|
250
250
|
end
|
251
251
|
|
@@ -285,7 +285,7 @@ class TestJsonpath < MiniTest::Unit::TestCase
|
|
285
285
|
'type' => 0.00001
|
286
286
|
}
|
287
287
|
}
|
288
|
-
assert_equal [{"type"=>0.00001}], JsonPath.new("$.[?(@.type == 0.00001)]").on(data)
|
288
|
+
assert_equal [{"type"=>0.00001}], JsonPath.new("$.data[?(@.type == 0.00001)]").on(data)
|
289
289
|
end
|
290
290
|
|
291
291
|
def test_digits_only_string
|
@@ -295,7 +295,7 @@ class TestJsonpath < MiniTest::Unit::TestCase
|
|
295
295
|
'id' => '123'
|
296
296
|
}
|
297
297
|
}
|
298
|
-
assert_equal([{"type"=>"users", "id"=>"123"}], JsonPath.new("$.[?(@.id == '123')]").on(data))
|
298
|
+
assert_equal([{"type"=>"users", "id"=>"123"}], JsonPath.new("$.foo[?(@.id == '123')]").on(data))
|
299
299
|
end
|
300
300
|
|
301
301
|
def test_digits_only_string_in_array
|
@@ -381,7 +381,7 @@ class TestJsonpath < MiniTest::Unit::TestCase
|
|
381
381
|
'number' => '(492) 080-3961'
|
382
382
|
}
|
383
383
|
}
|
384
|
-
assert_equal [{'number'=>'(492) 080-3961'}], JsonPath.new("$.[?(@.number == '(492) 080-3961')]").on(data)
|
384
|
+
assert_equal [{'number'=>'(492) 080-3961'}], JsonPath.new("$.data[?(@.number == '(492) 080-3961')]").on(data)
|
385
385
|
end
|
386
386
|
|
387
387
|
|
@@ -484,7 +484,7 @@ class TestJsonpath < MiniTest::Unit::TestCase
|
|
484
484
|
]
|
485
485
|
}.to_json
|
486
486
|
|
487
|
-
assert_equal ['C09C5GYHF'], JsonPath.on(json, "$..[?(@.name == 'general')].id")
|
487
|
+
assert_equal ['C09C5GYHF'], JsonPath.on(json, "$..channels[?(@.name == 'general')].id")
|
488
488
|
end
|
489
489
|
|
490
490
|
def test_regression_5
|
@@ -507,6 +507,52 @@ class TestJsonpath < MiniTest::Unit::TestCase
|
|
507
507
|
assert_equal 'C09C5GYHF', JsonPath.on(json, "$..channels[?(@.is_archived == 'false')].id")[0]
|
508
508
|
end
|
509
509
|
|
510
|
+
def test_changed
|
511
|
+
json =
|
512
|
+
{
|
513
|
+
"snapshot"=> {
|
514
|
+
"objects"=> {
|
515
|
+
"whatever"=> [
|
516
|
+
{
|
517
|
+
"column"=> {
|
518
|
+
"name"=> "ASSOCIATE_FLAG",
|
519
|
+
"nullable"=> true
|
520
|
+
}
|
521
|
+
},
|
522
|
+
{
|
523
|
+
"column"=> {
|
524
|
+
"name"=> "AUTHOR",
|
525
|
+
"nullable"=> false
|
526
|
+
}
|
527
|
+
}
|
528
|
+
]
|
529
|
+
}
|
530
|
+
}
|
531
|
+
}
|
532
|
+
assert_equal true, JsonPath.on(json, "$..column[?(@.name == 'ASSOCIATE_FLAG')].nullable")[0]
|
533
|
+
end
|
534
|
+
|
535
|
+
def test_another
|
536
|
+
json = {
|
537
|
+
initial: true,
|
538
|
+
not: true
|
539
|
+
}.to_json
|
540
|
+
assert_equal [true], JsonPath.on(json, "$.initial[?(@)]")
|
541
|
+
json = {
|
542
|
+
initial: false,
|
543
|
+
not: true
|
544
|
+
}.to_json
|
545
|
+
assert_equal [], JsonPath.on(json, "$.initial[?(@)]")
|
546
|
+
end
|
547
|
+
|
548
|
+
def test_hanging
|
549
|
+
json = { initial: true }.to_json
|
550
|
+
success_path = "$.initial"
|
551
|
+
assert_equal [true], JsonPath.on(json, success_path)
|
552
|
+
broken_path = "$.initial\n"
|
553
|
+
assert_equal [true], JsonPath.on(json, broken_path)
|
554
|
+
end
|
555
|
+
|
510
556
|
def example_object
|
511
557
|
{ 'store' => {
|
512
558
|
'book' => [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonpath
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Hull
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-06-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
157
|
version: '0'
|
158
158
|
requirements: []
|
159
159
|
rubyforge_project: jsonpath
|
160
|
-
rubygems_version: 2.6.
|
160
|
+
rubygems_version: 2.6.14
|
161
161
|
signing_key:
|
162
162
|
specification_version: 4
|
163
163
|
summary: Ruby implementation of http://goessner.net/articles/JsonPath/
|