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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.rubocop.yml +26 -7
  4. data/.ruby-version +1 -1
  5. data/CHANGELOG.md +58 -0
  6. data/README.md +125 -123
  7. data/Rakefile +3 -3
  8. data/certs/jgrp.pem +21 -21
  9. data/lib/json_p3/errors.rb +51 -43
  10. data/lib/json_p3/patch/op.rb +23 -0
  11. data/lib/json_p3/patch/op_add.rb +51 -0
  12. data/lib/json_p3/patch/op_copy.rb +64 -0
  13. data/lib/json_p3/patch/op_move.rb +74 -0
  14. data/lib/json_p3/patch/op_remove.rb +56 -0
  15. data/lib/json_p3/patch/op_replace.rb +54 -0
  16. data/lib/json_p3/patch/op_test.rb +31 -0
  17. data/lib/json_p3/patch.rb +15 -330
  18. data/lib/json_p3/path/environment.rb +113 -0
  19. data/lib/json_p3/path/filter.rb +463 -0
  20. data/lib/json_p3/path/function.rb +12 -0
  21. data/lib/json_p3/path/function_extensions/count.rb +15 -0
  22. data/lib/json_p3/path/function_extensions/length.rb +17 -0
  23. data/lib/json_p3/path/function_extensions/match.rb +62 -0
  24. data/lib/json_p3/path/function_extensions/pattern.rb +42 -0
  25. data/lib/json_p3/path/function_extensions/search.rb +44 -0
  26. data/lib/json_p3/path/function_extensions/value.rb +15 -0
  27. data/lib/json_p3/path/lexer.rb +220 -0
  28. data/lib/json_p3/path/node.rb +48 -0
  29. data/lib/json_p3/path/parser.rb +676 -0
  30. data/lib/json_p3/path/query.rb +74 -0
  31. data/lib/json_p3/path/segment.rb +172 -0
  32. data/lib/json_p3/path/selector.rb +304 -0
  33. data/lib/json_p3/path/serialize.rb +16 -0
  34. data/lib/json_p3/path/unescape.rb +134 -0
  35. data/lib/json_p3/pointer.rb +15 -76
  36. data/lib/json_p3/relative_pointer.rb +69 -0
  37. data/lib/json_p3/version.rb +1 -1
  38. data/lib/json_p3.rb +50 -13
  39. data/sig/json_p3/cache.rbs +21 -0
  40. data/sig/json_p3/errors.rbs +55 -0
  41. data/sig/json_p3/patch.rbs +145 -0
  42. data/sig/json_p3/path/environment.rbs +81 -0
  43. data/sig/json_p3/path/filter.rbs +196 -0
  44. data/sig/json_p3/path/function.rbs +94 -0
  45. data/sig/json_p3/path/lexer.rbs +62 -0
  46. data/sig/json_p3/path/node.rbs +46 -0
  47. data/sig/json_p3/path/parser.rbs +92 -0
  48. data/sig/json_p3/path/query.rbs +47 -0
  49. data/sig/json_p3/path/segment.rbs +54 -0
  50. data/sig/json_p3/path/selector.rbs +100 -0
  51. data/sig/json_p3/path/serialize.rbs +9 -0
  52. data/sig/json_p3/path/unescape.rbs +12 -0
  53. data/sig/json_p3/pointer.rbs +64 -0
  54. data/sig/json_p3/relative_pointer.rbs +30 -0
  55. data/sig/json_p3.rbs +24 -1313
  56. data.tar.gz.sig +0 -0
  57. metadata +66 -46
  58. metadata.gz.sig +0 -0
  59. data/lib/json_p3/environment.rb +0 -111
  60. data/lib/json_p3/filter.rb +0 -459
  61. data/lib/json_p3/function.rb +0 -10
  62. data/lib/json_p3/function_extensions/count.rb +0 -15
  63. data/lib/json_p3/function_extensions/length.rb +0 -17
  64. data/lib/json_p3/function_extensions/match.rb +0 -62
  65. data/lib/json_p3/function_extensions/pattern.rb +0 -39
  66. data/lib/json_p3/function_extensions/search.rb +0 -44
  67. data/lib/json_p3/function_extensions/value.rb +0 -15
  68. data/lib/json_p3/lexer.rb +0 -419
  69. data/lib/json_p3/node.rb +0 -44
  70. data/lib/json_p3/parser.rb +0 -553
  71. data/lib/json_p3/path.rb +0 -72
  72. data/lib/json_p3/segment.rb +0 -158
  73. data/lib/json_p3/selector.rb +0 -306
  74. data/lib/json_p3/serialize.rb +0 -13
  75. data/lib/json_p3/token.rb +0 -36
  76. 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