-
Notifications
You must be signed in to change notification settings - Fork 301
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
encoding/jsonschema: refactor reference handling
This refactors references to use a general system that maps references through a new `MapRef` function that supercedes the existing `MapURL` and `Map` functions. To support this, we use the new `structBuilder` type to build up the final syntax. This fixes a bunch of existing reported and unreported issues, including: - json pointer escaping: JSON pointers were not previously escaped and unescaped correctly. - references into internal structure: `$ref` references can now reference arbitrary internal structure inside the schema being extracted, including nodes that aren't actually schemas. - better doc comments: the outer-level doc comment is now correctly preserved in all circumstances There are inevitably some changes in the form of the generated schemas: - field ordering of definitions is now always lexical - some comments move to new (better) locations - attribute placement also moves to a (better) location - by default, only top level `$defs` members are exported as public definitions. The last issue could be considered a backward incompatible change, but in practice - nested definitions are rare - the nested definitions were not easily accessible anyway in most cases (e.g. when inside a property or other expression) - the new `MapRef` feature can be used to change the location of any schema, including these. As yet, the `MapRef` functionality as provided to the API is not tested other than with `DefaultMapRef`, and the `DefineSchemas` callback is not wired up. This will land in a subsequent CL: in the meantime, what we've got here seems sufficient as an intermediate step. Fixes #3593 Fixes #3548 Updates #2699 Fixes #2287 Fixes #390 Signed-off-by: Roger Peppe <rogpeppe@gmail.com> Change-Id: Icfcff6e3d9f1d09f0418ddd493e01beb78045d59 Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1205706 TryBot-Result: CUEcueckoo <cueckoo@cuelang.org> Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com> Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
- Loading branch information
Showing
101 changed files
with
1,665 additions
and
1,996 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.