json_p3 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.rubocop.yml +26 -7
- data/.ruby-version +1 -1
- data/CHANGELOG.md +58 -0
- data/README.md +125 -123
- data/Rakefile +3 -3
- data/certs/jgrp.pem +21 -21
- data/lib/json_p3/errors.rb +51 -43
- data/lib/json_p3/patch/op.rb +23 -0
- data/lib/json_p3/patch/op_add.rb +51 -0
- data/lib/json_p3/patch/op_copy.rb +64 -0
- data/lib/json_p3/patch/op_move.rb +74 -0
- data/lib/json_p3/patch/op_remove.rb +56 -0
- data/lib/json_p3/patch/op_replace.rb +54 -0
- data/lib/json_p3/patch/op_test.rb +31 -0
- data/lib/json_p3/patch.rb +15 -330
- data/lib/json_p3/path/environment.rb +113 -0
- data/lib/json_p3/path/filter.rb +463 -0
- data/lib/json_p3/path/function.rb +12 -0
- data/lib/json_p3/path/function_extensions/count.rb +15 -0
- data/lib/json_p3/path/function_extensions/length.rb +17 -0
- data/lib/json_p3/path/function_extensions/match.rb +62 -0
- data/lib/json_p3/path/function_extensions/pattern.rb +42 -0
- data/lib/json_p3/path/function_extensions/search.rb +44 -0
- data/lib/json_p3/path/function_extensions/value.rb +15 -0
- data/lib/json_p3/path/lexer.rb +220 -0
- data/lib/json_p3/path/node.rb +48 -0
- data/lib/json_p3/path/parser.rb +676 -0
- data/lib/json_p3/path/query.rb +74 -0
- data/lib/json_p3/path/segment.rb +172 -0
- data/lib/json_p3/path/selector.rb +304 -0
- data/lib/json_p3/path/serialize.rb +16 -0
- data/lib/json_p3/path/unescape.rb +134 -0
- data/lib/json_p3/pointer.rb +15 -76
- data/lib/json_p3/relative_pointer.rb +69 -0
- data/lib/json_p3/version.rb +1 -1
- data/lib/json_p3.rb +50 -13
- data/sig/json_p3/cache.rbs +21 -0
- data/sig/json_p3/errors.rbs +55 -0
- data/sig/json_p3/patch.rbs +145 -0
- data/sig/json_p3/path/environment.rbs +81 -0
- data/sig/json_p3/path/filter.rbs +196 -0
- data/sig/json_p3/path/function.rbs +94 -0
- data/sig/json_p3/path/lexer.rbs +62 -0
- data/sig/json_p3/path/node.rbs +46 -0
- data/sig/json_p3/path/parser.rbs +92 -0
- data/sig/json_p3/path/query.rbs +47 -0
- data/sig/json_p3/path/segment.rbs +54 -0
- data/sig/json_p3/path/selector.rbs +100 -0
- data/sig/json_p3/path/serialize.rbs +9 -0
- data/sig/json_p3/path/unescape.rbs +12 -0
- data/sig/json_p3/pointer.rbs +64 -0
- data/sig/json_p3/relative_pointer.rbs +30 -0
- data/sig/json_p3.rbs +24 -1313
- data.tar.gz.sig +0 -0
- metadata +66 -46
- metadata.gz.sig +0 -0
- data/lib/json_p3/environment.rb +0 -111
- data/lib/json_p3/filter.rb +0 -459
- data/lib/json_p3/function.rb +0 -10
- data/lib/json_p3/function_extensions/count.rb +0 -15
- data/lib/json_p3/function_extensions/length.rb +0 -17
- data/lib/json_p3/function_extensions/match.rb +0 -62
- data/lib/json_p3/function_extensions/pattern.rb +0 -39
- data/lib/json_p3/function_extensions/search.rb +0 -44
- data/lib/json_p3/function_extensions/value.rb +0 -15
- data/lib/json_p3/lexer.rb +0 -419
- data/lib/json_p3/node.rb +0 -44
- data/lib/json_p3/parser.rb +0 -553
- data/lib/json_p3/path.rb +0 -72
- data/lib/json_p3/segment.rb +0 -158
- data/lib/json_p3/selector.rb +0 -306
- data/lib/json_p3/serialize.rb +0 -13
- data/lib/json_p3/token.rb +0 -36
- data/lib/json_p3/unescape.rb +0 -112
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module JSONP3
|
|
2
|
+
module Path
|
|
3
|
+
RE_SLASH_U: ::Regexp
|
|
4
|
+
|
|
5
|
+
# Replace escape sequences with their equivalent Unicode code point.
|
|
6
|
+
def self.unescape: (String value, t_token token, String query) -> String
|
|
7
|
+
|
|
8
|
+
def self.high_surrogate?: (untyped code_point) -> untyped
|
|
9
|
+
|
|
10
|
+
def self.low_surrogate?: (untyped code_point) -> untyped
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
module JSONP3
|
|
2
|
+
# Identify a single value in JSON-like data, as per RFC 6901.
|
|
3
|
+
class Pointer
|
|
4
|
+
@tokens: Array[String | Integer]
|
|
5
|
+
|
|
6
|
+
@pointer: String
|
|
7
|
+
|
|
8
|
+
UNDEFINED: :__undefined
|
|
9
|
+
|
|
10
|
+
RE_INT: ::Regexp
|
|
11
|
+
|
|
12
|
+
attr_reader tokens: Array[String | Integer]
|
|
13
|
+
|
|
14
|
+
def self.resolve: (String pointer, untyped value, ?default: untyped) -> untyped
|
|
15
|
+
|
|
16
|
+
# Encode an array of strings and integers into a JSON pointer.
|
|
17
|
+
# @param tokens [Array<String | Integer>]
|
|
18
|
+
# @return [String]
|
|
19
|
+
def self.encode: (Array[String | Integer] tokens) -> String
|
|
20
|
+
|
|
21
|
+
# @param pointer [String]
|
|
22
|
+
def initialize: (String pointer) -> void
|
|
23
|
+
|
|
24
|
+
# Resolve this pointer against JSON-like data _value_.
|
|
25
|
+
def resolve: (untyped value, ?default: untyped) -> untyped
|
|
26
|
+
|
|
27
|
+
def resolve_with_parent: (untyped value) -> ::Array[untyped]
|
|
28
|
+
|
|
29
|
+
def relative_to?: (Pointer pointer) -> bool
|
|
30
|
+
|
|
31
|
+
# @param parts [String]
|
|
32
|
+
def join: (*String parts) -> Pointer
|
|
33
|
+
|
|
34
|
+
# Return _true_ if this pointer can be resolved against _value_, even if the resolved
|
|
35
|
+
# value is false or nil.
|
|
36
|
+
def exist?: (untyped value) -> bool
|
|
37
|
+
|
|
38
|
+
# Return this pointer's parent as a new pointer. If this pointer points to the
|
|
39
|
+
# document root, self is returned.
|
|
40
|
+
def parent: () -> Pointer
|
|
41
|
+
|
|
42
|
+
# @param rel [String | RelativePointer]
|
|
43
|
+
# @return [Pointer]
|
|
44
|
+
def to: ((String | RelativePointer) rel) -> Pointer
|
|
45
|
+
|
|
46
|
+
def to_s: () -> String
|
|
47
|
+
|
|
48
|
+
# @param pointer [String]
|
|
49
|
+
# @return [Array<String | Integer>]
|
|
50
|
+
def parse: (String pointer) -> Array[(String | Integer)]
|
|
51
|
+
|
|
52
|
+
# @param value [Object]
|
|
53
|
+
# @param token [String | Integer]
|
|
54
|
+
# @return [Object] the "fetched" object from _value_ or UNDEFINED.
|
|
55
|
+
def get_item: (untyped value, (String | Integer) token) -> untyped
|
|
56
|
+
|
|
57
|
+
# Like `#parse`, but assumes there's no leading slash.
|
|
58
|
+
# @param pointer [String]
|
|
59
|
+
# @return [Array<String | Integer>]
|
|
60
|
+
def _parse: (String pointer) -> Array[(String | Integer)]
|
|
61
|
+
|
|
62
|
+
def _join: (String other) -> Pointer
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module JSONP3
|
|
2
|
+
# A relative JSON Pointer.
|
|
3
|
+
# See https://datatracker.ietf.org/doc/html/draft-hha-relative-json-pointer
|
|
4
|
+
class RelativePointer
|
|
5
|
+
@origin: Integer
|
|
6
|
+
|
|
7
|
+
@index: Integer
|
|
8
|
+
|
|
9
|
+
@pointer: (String | Pointer)
|
|
10
|
+
|
|
11
|
+
RE_RELATIVE_POINTER: ::Regexp
|
|
12
|
+
|
|
13
|
+
RE_INT: ::Regexp
|
|
14
|
+
|
|
15
|
+
# @param rel [String]
|
|
16
|
+
def initialize: (String rel) -> void
|
|
17
|
+
|
|
18
|
+
def to_s: () -> ::String
|
|
19
|
+
|
|
20
|
+
# @param pointer [String | Pointer]
|
|
21
|
+
# @return [Pointer]
|
|
22
|
+
def to: ((String | Pointer) pointer) -> Pointer
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
# @param token [String]
|
|
27
|
+
# @return [Integer]
|
|
28
|
+
def parse_int: (String token) -> Integer
|
|
29
|
+
end
|
|
30
|
+
end
|