Skip to content

Commit b97dc7b

Browse files
authored
Cleanup Alterschema after "next" canonicalizer approach (#727)
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
1 parent 2b69383 commit b97dc7b

67 files changed

Lines changed: 890 additions & 980 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

contrib/canonicalize.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ auto main(int argc, char *argv[]) -> int {
1515

1616
sourcemeta::blaze::SchemaTransformer bundle;
1717
sourcemeta::blaze::add(bundle,
18-
sourcemeta::blaze::AlterSchemaMode::CanonicalizerNext);
18+
sourcemeta::blaze::AlterSchemaMode::Canonicalizer);
1919
const auto result{
2020
bundle.apply(document, sourcemeta::core::schema_walker,
2121
sourcemeta::core::schema_resolver,

src/alterschema/CMakeLists.txt

Lines changed: 47 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,64 @@ sourcemeta_library(NAMESPACE sourcemeta PROJECT blaze NAME alterschema
33
PRIVATE_HEADERS error.h transformer.h
44
SOURCES alterschema.cc schema_rule.cc transformer.cc
55
# Canonicalizer
6+
canonicalizer/additional_items_implicit.h
7+
canonicalizer/additional_properties_implicit.h
8+
canonicalizer/comment_drop.h
69
canonicalizer/const_as_enum.h
10+
canonicalizer/dependencies_to_any_of.h
11+
canonicalizer/dependencies_to_extends_disallow.h
12+
canonicalizer/dependent_required_to_any_of.h
13+
canonicalizer/dependent_schemas_to_any_of.h
14+
canonicalizer/deprecated_false_drop.h
15+
canonicalizer/disallow_to_array_of_schemas.h
16+
canonicalizer/divisible_by_implicit.h
17+
canonicalizer/empty_definitions_drop.h
18+
canonicalizer/empty_defs_drop.h
19+
canonicalizer/empty_dependencies_drop.h
20+
canonicalizer/empty_dependent_required_drop.h
21+
canonicalizer/empty_dependent_schemas_drop.h
22+
canonicalizer/enum_drop_redundant_validation.h
23+
canonicalizer/enum_filter_by_type.h
24+
canonicalizer/exclusive_bounds_false_drop.h
25+
canonicalizer/exclusive_maximum_boolean_integer_fold.h
726
canonicalizer/exclusive_maximum_integer_to_maximum.h
27+
canonicalizer/exclusive_minimum_boolean_integer_fold.h
828
canonicalizer/exclusive_minimum_integer_to_minimum.h
29+
canonicalizer/extends_to_array.h
30+
canonicalizer/if_then_else_implicit.h
31+
canonicalizer/implicit_array_keywords.h
32+
canonicalizer/implicit_contains_keywords.h
33+
canonicalizer/implicit_object_keywords.h
934
canonicalizer/items_implicit.h
1035
canonicalizer/max_contains_covered_by_max_items.h
36+
canonicalizer/max_decimal_implicit.h
37+
canonicalizer/maximum_can_equal_integer_fold.h
38+
canonicalizer/maximum_can_equal_true_drop.h
1139
canonicalizer/min_items_given_min_contains.h
12-
canonicalizer/min_items_implicit.h
1340
canonicalizer/min_length_implicit.h
1441
canonicalizer/min_properties_covered_by_required.h
1542
canonicalizer/min_properties_implicit.h
43+
canonicalizer/minimum_can_equal_integer_fold.h
44+
canonicalizer/minimum_can_equal_true_drop.h
1645
canonicalizer/multiple_of_implicit.h
46+
canonicalizer/optional_property_implicit.h
1747
canonicalizer/properties_implicit.h
48+
canonicalizer/property_names_implicit.h
49+
canonicalizer/recursive_anchor_false_drop.h
50+
canonicalizer/required_property_implicit.h
1851
canonicalizer/type_array_to_any_of.h
1952
canonicalizer/type_boolean_as_enum.h
53+
canonicalizer/type_inherit_in_place.h
2054
canonicalizer/type_null_as_enum.h
2155
canonicalizer/type_union_implicit.h
22-
23-
canonicalizer/next/additional_items_implicit.h
24-
canonicalizer/next/additional_properties_implicit.h
25-
canonicalizer/next/empty_dependencies_drop.h
26-
canonicalizer/next/enum_filter_by_type.h
27-
canonicalizer/next/empty_definitions_drop.h
28-
canonicalizer/next/dependencies_to_any_of.h
29-
canonicalizer/next/empty_object_as_true_next.h
30-
canonicalizer/next/enum_drop_redundant_validation.h
31-
canonicalizer/next/exclusive_bounds_false_drop.h
32-
canonicalizer/next/exclusive_maximum_boolean_integer_fold.h
33-
canonicalizer/next/exclusive_minimum_boolean_integer_fold.h
34-
canonicalizer/next/implicit_array_keywords.h
35-
canonicalizer/next/implicit_object_keywords.h
36-
canonicalizer/next/property_names_implicit.h
37-
canonicalizer/next/type_with_applicator_to_allof.h
38-
canonicalizer/next/unsatisfiable_exclusive_equal_bounds.h
39-
canonicalizer/next/unsatisfiable_type_and_enum.h
56+
canonicalizer/type_union_to_schemas.h
57+
canonicalizer/type_with_applicator_to_allof.h
58+
canonicalizer/type_with_applicator_to_extends.h
59+
canonicalizer/unevaluated_items_to_items.h
60+
canonicalizer/unevaluated_properties_to_additional_properties.h
61+
canonicalizer/unsatisfiable_can_equal_bounds.h
62+
canonicalizer/unsatisfiable_exclusive_equal_bounds.h
63+
canonicalizer/unsatisfiable_type_and_enum.h
4064

4165
# Common
4266
common/allof_false_simplify.h
@@ -59,7 +83,6 @@ sourcemeta_library(NAMESPACE sourcemeta PROJECT blaze NAME alterschema
5983
common/duplicate_enum_values.h
6084
common/duplicate_required_values.h
6185
common/empty_object_as_true.h
62-
common/else_empty.h
6386
common/else_without_if.h
6487
common/enum_with_type.h
6588
common/equal_numeric_bounds_to_enum.h
@@ -81,14 +104,11 @@ sourcemeta_library(NAMESPACE sourcemeta PROJECT blaze NAME alterschema
81104
common/oneof_to_anyof_disjoint_types.h
82105
common/required_properties_in_properties.h
83106
common/single_type_array.h
84-
common/then_empty.h
85107
common/then_without_if.h
86108
common/unknown_keywords_prefix.h
87109
common/unknown_local_ref.h
88110
common/unsatisfiable_drop_validation.h
89111
common/unnecessary_allof_ref_wrapper_draft.h
90-
common/unnecessary_allof_ref_wrapper_modern.h
91-
common/unnecessary_allof_wrapper.h
92112
common/unsatisfiable_in_place_applicator_type.h
93113

94114
# Linter
@@ -101,6 +121,7 @@ sourcemeta_library(NAMESPACE sourcemeta PROJECT blaze NAME alterschema
101121
linter/description_trailing_period.h
102122
linter/description_trim.h
103123
linter/duplicate_examples.h
124+
linter/else_empty.h
104125
linter/enum_to_const.h
105126
linter/equal_numeric_bounds_to_const.h
106127
linter/forbid_empty_enum.h
@@ -114,6 +135,7 @@ sourcemeta_library(NAMESPACE sourcemeta PROJECT blaze NAME alterschema
114135
linter/property_names_default.h
115136
linter/property_names_type_default.h
116137
linter/simple_properties_identifiers.h
138+
linter/then_empty.h
117139
linter/title_description_equal.h
118140
linter/title_trailing_period.h
119141
linter/title_trim.h
@@ -122,6 +144,8 @@ sourcemeta_library(NAMESPACE sourcemeta PROJECT blaze NAME alterschema
122144
linter/top_level_title.h
123145
linter/unevaluated_items_default.h
124146
linter/unevaluated_properties_default.h
147+
linter/unnecessary_allof_ref_wrapper_modern.h
148+
linter/unnecessary_allof_wrapper.h
125149
linter/unsatisfiable_max_contains.h
126150
linter/unsatisfiable_min_properties.h
127151
linter/valid_default.h

src/alterschema/alterschema.cc

Lines changed: 55 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -107,68 +107,64 @@ auto WALK_UP_IN_PLACE_APPLICATORS(const JSON &root, const SchemaFrame &frame,
107107
return false; \
108108
}
109109

110-
// Canonicalizer
110+
#include "canonicalizer/additional_items_implicit.h"
111+
#include "canonicalizer/additional_properties_implicit.h"
112+
#include "canonicalizer/comment_drop.h"
111113
#include "canonicalizer/const_as_enum.h"
114+
#include "canonicalizer/dependencies_to_any_of.h"
115+
#include "canonicalizer/dependencies_to_extends_disallow.h"
116+
#include "canonicalizer/dependent_required_to_any_of.h"
117+
#include "canonicalizer/dependent_schemas_to_any_of.h"
118+
#include "canonicalizer/deprecated_false_drop.h"
119+
#include "canonicalizer/disallow_to_array_of_schemas.h"
120+
#include "canonicalizer/divisible_by_implicit.h"
121+
#include "canonicalizer/empty_definitions_drop.h"
122+
#include "canonicalizer/empty_defs_drop.h"
123+
#include "canonicalizer/empty_dependencies_drop.h"
124+
#include "canonicalizer/empty_dependent_required_drop.h"
125+
#include "canonicalizer/empty_dependent_schemas_drop.h"
126+
#include "canonicalizer/enum_drop_redundant_validation.h"
127+
#include "canonicalizer/enum_filter_by_type.h"
128+
#include "canonicalizer/exclusive_bounds_false_drop.h"
129+
#include "canonicalizer/exclusive_maximum_boolean_integer_fold.h"
112130
#include "canonicalizer/exclusive_maximum_integer_to_maximum.h"
131+
#include "canonicalizer/exclusive_minimum_boolean_integer_fold.h"
113132
#include "canonicalizer/exclusive_minimum_integer_to_minimum.h"
133+
#include "canonicalizer/extends_to_array.h"
134+
#include "canonicalizer/if_then_else_implicit.h"
135+
#include "canonicalizer/implicit_array_keywords.h"
136+
#include "canonicalizer/implicit_contains_keywords.h"
137+
#include "canonicalizer/implicit_object_keywords.h"
114138
#include "canonicalizer/items_implicit.h"
115139
#include "canonicalizer/max_contains_covered_by_max_items.h"
140+
#include "canonicalizer/max_decimal_implicit.h"
141+
#include "canonicalizer/maximum_can_equal_integer_fold.h"
142+
#include "canonicalizer/maximum_can_equal_true_drop.h"
116143
#include "canonicalizer/min_items_given_min_contains.h"
117-
#include "canonicalizer/min_items_implicit.h"
118144
#include "canonicalizer/min_length_implicit.h"
119145
#include "canonicalizer/min_properties_covered_by_required.h"
120146
#include "canonicalizer/min_properties_implicit.h"
147+
#include "canonicalizer/minimum_can_equal_integer_fold.h"
148+
#include "canonicalizer/minimum_can_equal_true_drop.h"
121149
#include "canonicalizer/multiple_of_implicit.h"
122-
#include "canonicalizer/next/additional_items_implicit.h"
123-
#include "canonicalizer/next/additional_properties_implicit.h"
124-
#include "canonicalizer/next/comment_drop.h"
125-
#include "canonicalizer/next/definitions_to_defs.h"
126-
#include "canonicalizer/next/dependencies_to_any_of.h"
127-
#include "canonicalizer/next/dependencies_to_extends_disallow.h"
128-
#include "canonicalizer/next/dependent_required_to_any_of.h"
129-
#include "canonicalizer/next/dependent_schemas_to_any_of.h"
130-
#include "canonicalizer/next/deprecated_false_drop.h"
131-
#include "canonicalizer/next/disallow_to_array_of_schemas.h"
132-
#include "canonicalizer/next/divisible_by_implicit.h"
133-
#include "canonicalizer/next/empty_definitions_drop.h"
134-
#include "canonicalizer/next/empty_defs_drop.h"
135-
#include "canonicalizer/next/empty_dependencies_drop.h"
136-
#include "canonicalizer/next/empty_dependent_required_drop.h"
137-
#include "canonicalizer/next/empty_dependent_schemas_drop.h"
138-
#include "canonicalizer/next/empty_object_as_true_next.h"
139-
#include "canonicalizer/next/enum_drop_redundant_validation.h"
140-
#include "canonicalizer/next/enum_filter_by_type.h"
141-
#include "canonicalizer/next/exclusive_bounds_false_drop.h"
142-
#include "canonicalizer/next/exclusive_maximum_boolean_integer_fold.h"
143-
#include "canonicalizer/next/exclusive_minimum_boolean_integer_fold.h"
144-
#include "canonicalizer/next/extends_to_array.h"
145-
#include "canonicalizer/next/if_then_else_implicit.h"
146-
#include "canonicalizer/next/implicit_array_keywords.h"
147-
#include "canonicalizer/next/implicit_contains_keywords.h"
148-
#include "canonicalizer/next/implicit_object_keywords.h"
149-
#include "canonicalizer/next/max_decimal_implicit.h"
150-
#include "canonicalizer/next/maximum_can_equal_integer_fold.h"
151-
#include "canonicalizer/next/maximum_can_equal_true_drop.h"
152-
#include "canonicalizer/next/minimum_can_equal_integer_fold.h"
153-
#include "canonicalizer/next/minimum_can_equal_true_drop.h"
154-
#include "canonicalizer/next/optional_property_implicit.h"
155-
#include "canonicalizer/next/property_names_implicit.h"
156-
#include "canonicalizer/next/recursive_anchor_false_drop.h"
157-
#include "canonicalizer/next/required_property_implicit.h"
158-
#include "canonicalizer/next/type_union_to_schemas.h"
159-
#include "canonicalizer/next/type_with_applicator_to_allof.h"
160-
#include "canonicalizer/next/type_with_applicator_to_extends.h"
161-
#include "canonicalizer/next/unevaluated_items_to_items.h"
162-
#include "canonicalizer/next/unevaluated_properties_to_additional_properties.h"
163-
#include "canonicalizer/next/unsatisfiable_can_equal_bounds.h"
164-
#include "canonicalizer/next/unsatisfiable_exclusive_equal_bounds.h"
165-
#include "canonicalizer/next/unsatisfiable_type_and_enum.h"
150+
#include "canonicalizer/optional_property_implicit.h"
166151
#include "canonicalizer/properties_implicit.h"
152+
#include "canonicalizer/property_names_implicit.h"
153+
#include "canonicalizer/recursive_anchor_false_drop.h"
154+
#include "canonicalizer/required_property_implicit.h"
167155
#include "canonicalizer/type_array_to_any_of.h"
168156
#include "canonicalizer/type_boolean_as_enum.h"
169157
#include "canonicalizer/type_inherit_in_place.h"
170158
#include "canonicalizer/type_null_as_enum.h"
171159
#include "canonicalizer/type_union_implicit.h"
160+
#include "canonicalizer/type_union_to_schemas.h"
161+
#include "canonicalizer/type_with_applicator_to_allof.h"
162+
#include "canonicalizer/type_with_applicator_to_extends.h"
163+
#include "canonicalizer/unevaluated_items_to_items.h"
164+
#include "canonicalizer/unevaluated_properties_to_additional_properties.h"
165+
#include "canonicalizer/unsatisfiable_can_equal_bounds.h"
166+
#include "canonicalizer/unsatisfiable_exclusive_equal_bounds.h"
167+
#include "canonicalizer/unsatisfiable_type_and_enum.h"
172168

173169
// Common
174170
#include "common/allof_false_simplify.h"
@@ -189,7 +185,6 @@ auto WALK_UP_IN_PLACE_APPLICATORS(const JSON &root, const SchemaFrame &frame,
189185
#include "common/duplicate_anyof_branches.h"
190186
#include "common/duplicate_enum_values.h"
191187
#include "common/duplicate_required_values.h"
192-
#include "common/else_empty.h"
193188
#include "common/else_without_if.h"
194189
#include "common/empty_object_as_true.h"
195190
#include "common/enum_with_type.h"
@@ -213,15 +208,16 @@ auto WALK_UP_IN_PLACE_APPLICATORS(const JSON &root, const SchemaFrame &frame,
213208
#include "common/orphan_definitions.h"
214209
#include "common/required_properties_in_properties.h"
215210
#include "common/single_type_array.h"
216-
#include "common/then_empty.h"
217211
#include "common/then_without_if.h"
218212
#include "common/unknown_keywords_prefix.h"
219213
#include "common/unknown_local_ref.h"
220214
#include "common/unnecessary_allof_ref_wrapper_draft.h"
221-
#include "common/unnecessary_allof_ref_wrapper_modern.h"
222-
#include "common/unnecessary_allof_wrapper.h"
223215
#include "common/unsatisfiable_drop_validation.h"
224216
#include "common/unsatisfiable_in_place_applicator_type.h"
217+
#include "linter/else_empty.h"
218+
#include "linter/then_empty.h"
219+
#include "linter/unnecessary_allof_ref_wrapper_modern.h"
220+
#include "linter/unnecessary_allof_wrapper.h"
225221

226222
// Linter
227223
#include "linter/comment_trim.h"
@@ -265,8 +261,7 @@ auto WALK_UP_IN_PLACE_APPLICATORS(const JSON &root, const SchemaFrame &frame,
265261
namespace sourcemeta::blaze {
266262

267263
auto add(SchemaTransformer &bundle, const AlterSchemaMode mode) -> void {
268-
if (mode == AlterSchemaMode::CanonicalizerNext) {
269-
bundle.add<EmptyObjectAsTrueNext>();
264+
if (mode == AlterSchemaMode::Canonicalizer) {
270265
bundle.add<ExclusiveMinimumBooleanIntegerFold>();
271266
bundle.add<ExclusiveMaximumBooleanIntegerFold>();
272267
bundle.add<ExclusiveBoundsFalseDrop>();
@@ -276,7 +271,6 @@ auto add(SchemaTransformer &bundle, const AlterSchemaMode mode) -> void {
276271
bundle.add<MinimumCanEqualTrueDrop>();
277272
bundle.add<MaximumCanEqualTrueDrop>();
278273
bundle.add<CommentDrop>();
279-
bundle.add<DefinitionsToDefsNext>();
280274
bundle.add<DeprecatedFalseDrop>();
281275
bundle.add<RecursiveAnchorFalseDrop>();
282276
bundle.add<UnevaluatedItemsToItems>();
@@ -290,14 +284,14 @@ auto add(SchemaTransformer &bundle, const AlterSchemaMode mode) -> void {
290284
bundle.add<DisallowToArrayOfSchemas>();
291285
}
292286

293-
if (mode == AlterSchemaMode::Canonicalizer ||
294-
mode == AlterSchemaMode::CanonicalizerNext) {
287+
if (mode == AlterSchemaMode::Canonicalizer) {
295288
bundle.add<TypeInheritInPlace>();
296289
bundle.add<TypeUnionImplicit>();
297290
bundle.add<TypeArrayToAnyOf>();
298291
}
299292

300-
if (mode == AlterSchemaMode::Linter) {
293+
if (mode == AlterSchemaMode::Linter ||
294+
mode == AlterSchemaMode::Canonicalizer) {
301295
bundle.add<DefinitionsToDefs>();
302296
}
303297

@@ -322,7 +316,7 @@ auto add(SchemaTransformer &bundle, const AlterSchemaMode mode) -> void {
322316
bundle.add<MaxContainsWithoutContains>();
323317
bundle.add<MinContainsWithoutContains>();
324318
bundle.add<NotFalse>();
325-
if (mode != AlterSchemaMode::CanonicalizerNext) {
319+
if (mode != AlterSchemaMode::Canonicalizer) {
326320
bundle.add<ThenEmpty>();
327321
bundle.add<ElseEmpty>();
328322
}
@@ -350,8 +344,7 @@ auto add(SchemaTransformer &bundle, const AlterSchemaMode mode) -> void {
350344
bundle.add<RequiredPropertiesInProperties>();
351345
bundle.add<OrphanDefinitions>();
352346

353-
if (mode == AlterSchemaMode::Canonicalizer ||
354-
mode == AlterSchemaMode::CanonicalizerNext) {
347+
if (mode == AlterSchemaMode::Canonicalizer) {
355348
bundle.add<ConstAsEnum>();
356349
bundle.add<EqualNumericBoundsToConst>();
357350
bundle.add<ExclusiveMaximumIntegerToMaximum>();
@@ -361,7 +354,6 @@ auto add(SchemaTransformer &bundle, const AlterSchemaMode mode) -> void {
361354
bundle.add<MaxContainsCoveredByMaxItems>();
362355
bundle.add<MinItemsGivenMinContains>();
363356
bundle.add<MinPropertiesCoveredByRequired>();
364-
bundle.add<MinItemsImplicit>();
365357
bundle.add<MinLengthImplicit>();
366358
bundle.add<MinPropertiesImplicit>();
367359
bundle.add<MultipleOfImplicit>();
@@ -407,19 +399,19 @@ auto add(SchemaTransformer &bundle, const AlterSchemaMode mode) -> void {
407399
bundle.add<ValidExamples>();
408400
}
409401

410-
if (mode != AlterSchemaMode::CanonicalizerNext) {
402+
if (mode != AlterSchemaMode::Canonicalizer) {
411403
bundle.add<UnnecessaryAllOfRefWrapperModern>();
412404
}
413405
bundle.add<UnnecessaryAllOfRefWrapperDraft>();
414406

415-
if (mode != AlterSchemaMode::CanonicalizerNext) {
407+
if (mode != AlterSchemaMode::Canonicalizer) {
416408
bundle.add<UnnecessaryAllOfWrapper>();
417409
}
418410

419411
bundle.add<DropAllOfEmptySchemas>();
420412
bundle.add<EmptyObjectAsTrue>();
421413

422-
if (mode == AlterSchemaMode::CanonicalizerNext) {
414+
if (mode == AlterSchemaMode::Canonicalizer) {
423415
bundle.add<UnsatisfiableTypeAndEnum>();
424416
bundle.add<EnumFilterByType>();
425417
bundle.add<TypeUnionToSchemas>();

src/alterschema/canonicalizer/next/additional_items_implicit.h renamed to src/alterschema/canonicalizer/additional_items_implicit.h

File renamed without changes.

src/alterschema/canonicalizer/next/additional_properties_implicit.h renamed to src/alterschema/canonicalizer/additional_properties_implicit.h

File renamed without changes.
File renamed without changes.

src/alterschema/canonicalizer/next/dependencies_to_any_of.h renamed to src/alterschema/canonicalizer/dependencies_to_any_of.h

File renamed without changes.

src/alterschema/canonicalizer/next/dependencies_to_extends_disallow.h renamed to src/alterschema/canonicalizer/dependencies_to_extends_disallow.h

File renamed without changes.

src/alterschema/canonicalizer/next/dependent_required_to_any_of.h renamed to src/alterschema/canonicalizer/dependent_required_to_any_of.h

File renamed without changes.

src/alterschema/canonicalizer/next/dependent_schemas_to_any_of.h renamed to src/alterschema/canonicalizer/dependent_schemas_to_any_of.h

File renamed without changes.

0 commit comments

Comments
 (0)