From 97b47f9576e792019119a6600a2eab3bd97606e1 Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 7 Dec 2022 14:24:23 -0800 Subject: [PATCH 1/7] Fix accidental ABNF omission Taking the index of the result of an index manipulation was shown in the example and intended to work, but left out of the ABNF apparently by accident. Also, rework the ABNF to keep it within the text RFC line width. --- relative-json-pointer.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/relative-json-pointer.xml b/relative-json-pointer.xml index 0521fac2..05f6af31 100644 --- a/relative-json-pointer.xml +++ b/relative-json-pointer.xml @@ -98,10 +98,11 @@ - relative-json-pointer =/ non-negative-integer "#" + relative-json-pointer = origin-specification + relative-json-pointer =/ origin-specification "#" + origin-specification = non-negative-integer [index-manipulation] index-manipulation = ("+" / "-") non-negative-integer - non-negative-integer = %x30 / %x31-39 *( %x30-39 ) + non-negative-integer = %x30 / %x31-39 *( %x30-39 ) ; "0", or digits without a leading "0" ]]> From f833869e4b1e7943b6693b7d0e1da6c1d908daea Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Tue, 17 Jan 2023 08:51:29 -0800 Subject: [PATCH 2/7] Better Rel JSON Ptr ABNF per Austin Wright Also, use tag. --- relative-json-pointer.xml | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/relative-json-pointer.xml b/relative-json-pointer.xml index 05f6af31..cf152f57 100644 --- a/relative-json-pointer.xml +++ b/relative-json-pointer.xml @@ -92,27 +92,19 @@ length or start with a '/' (%x2F). Similarly, a JSON Pointer will never be ambiguous with the '#'. -
- - The ABNF syntax of a Relative JSON Pointer is: - - - - relative-json-pointer =/ origin-specification "#" - origin-specification = non-negative-integer [index-manipulation] - index-manipulation = ("+" / "-") non-negative-integer - non-negative-integer = %x30 / %x31-39 *( %x30-39 ) - ; "0", or digits without a leading "0" -]]> - - - where <json-pointer> follows the production defined in - RFC 6901, Section 3 ("Syntax"). - -
+ The ABNF syntax of a Relative JSON Pointer is: +
From 0fc1f305cf73cb9dbeb4613625bca13080018ad9 Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Tue, 17 Jan 2023 09:49:57 -0800 Subject: [PATCH 3/7] Changelog for rel-json-ptr --- relative-json-pointer.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/relative-json-pointer.xml b/relative-json-pointer.xml index cf152f57..c3851f4d 100644 --- a/relative-json-pointer.xml +++ b/relative-json-pointer.xml @@ -322,6 +322,12 @@ + + + Fix ABNF omission for using # with index manipulation + Clarify handling of leading "0" + + Add array forward and backward index manipulation From ee1fd04e2595e3f4c8fd35c6202bfa92fe28d893 Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Tue, 17 Jan 2023 11:04:04 -0800 Subject: [PATCH 4/7] Update for next draft identifier. --- relative-json-pointer.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/relative-json-pointer.xml b/relative-json-pointer.xml index c3851f4d..3bc5337a 100644 --- a/relative-json-pointer.xml +++ b/relative-json-pointer.xml @@ -12,7 +12,7 @@ - + Relative JSON Pointers From c54b3def5ef2f852d942157888c7fdf3ce8e644b Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 15 Feb 2023 14:40:31 -0800 Subject: [PATCH 5/7] Update main decription to include index adjustment. Somehow this was left out of the main syntax description paragraph entirely. --- relative-json-pointer.xml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/relative-json-pointer.xml b/relative-json-pointer.xml index 3bc5337a..858abe94 100644 --- a/relative-json-pointer.xml +++ b/relative-json-pointer.xml @@ -83,11 +83,13 @@ A Relative JSON Pointer is a Unicode string in UTF-8 encoding (see RFC 8259, Section 8), comprising a non-negative integer, - followed by either a '#' (%x23) character or a JSON Pointer - (RFC 6901). + an optional index adjustment consisting of '+' (%x2B) or '-' (%x2D) followed + by a positive integer, followed by either a '#' (%x23) character or + a JSON Pointer (RFC 6901). - The separation between the integer prefix and the JSON Pointer will + The separation between the integer prefix (with optional adjustment) + and the JSON Pointer will always be unambiguous, because a JSON Pointer must be either zero- length or start with a '/' (%x2F). Similarly, a JSON Pointer will never be ambiguous with the '#'. From 64e047f97df12de1c0370a7d7f02e3ce234f719c Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 15 Feb 2023 14:44:24 -0800 Subject: [PATCH 6/7] Only allow non-zero index adjustmetns The current draft allows for an index adjustment of "0" which creates ambiguity because "1/foo", "1+0/foo", and "1-0/foo" are now three different ways to write a pointer with the exact same effect. This complicates round-trips between textual and functional representations, the original text would need to be preserved in order to re-constitute it correctly. There is no need for this added complication. --- relative-json-pointer.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/relative-json-pointer.xml b/relative-json-pointer.xml index 858abe94..610e719a 100644 --- a/relative-json-pointer.xml +++ b/relative-json-pointer.xml @@ -103,9 +103,10 @@ ; json-pointer from RFC 6901 origin-specification = non-negative-integer [ index-manipulation ] - index-manipulation = ( "+" / "-" ) non-negative-integer - non-negative-integer = "0" / %x31-39 *DIGIT - ; zero, or digits without a leading zero + index-manipulation = ( "+" / "-" ) positive-integer + non-negative-integer = "0" / positive-integer + positive-integer = %x31-39 *DIGIT + ; digits without a leading zero ]]>
From c327b1978f82bcc7756ae36a671bde52e520409c Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 15 Feb 2023 14:48:03 -0800 Subject: [PATCH 7/7] Give a positive index adjustment example --- relative-json-pointer.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/relative-json-pointer.xml b/relative-json-pointer.xml index 610e719a..084a95e4 100644 --- a/relative-json-pointer.xml +++ b/relative-json-pointer.xml @@ -199,7 +199,7 @@