Skip to content

Commit 4730075

Browse files
committed
[native_assets_cli] Use JSON enums where applicable
1 parent 0eeaa2d commit 4730075

File tree

2 files changed

+46
-64
lines changed

2 files changed

+46
-64
lines changed

pkgs/code_assets/doc/schema/shared/shared_definitions.schema.json

Lines changed: 30 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,14 @@
1717
"type": "string",
1818
"anyOf": [
1919
{
20-
"const": "arm"
21-
},
22-
{
23-
"const": "arm64"
24-
},
25-
{
26-
"const": "ia32"
27-
},
28-
{
29-
"const": "riscv32"
30-
},
31-
{
32-
"const": "riscv64"
33-
},
34-
{
35-
"const": "x64"
20+
"enum": [
21+
"arm",
22+
"arm64",
23+
"ia32",
24+
"riscv32",
25+
"riscv64",
26+
"x64"
27+
]
3628
},
3729
{
3830
"type": "string"
@@ -288,19 +280,13 @@
288280
"type": "string",
289281
"anyOf": [
290282
{
291-
"const": "dynamic_loading_bundle"
292-
},
293-
{
294-
"const": "dynamic_loading_executable"
295-
},
296-
{
297-
"const": "dynamic_loading_process"
298-
},
299-
{
300-
"const": "dynamic_loading_system"
301-
},
302-
{
303-
"const": "static"
283+
"enum": [
284+
"dynamic_loading_bundle",
285+
"dynamic_loading_executable",
286+
"dynamic_loading_process",
287+
"dynamic_loading_system",
288+
"static"
289+
]
304290
},
305291
{
306292
"type": "string"
@@ -333,22 +319,14 @@
333319
"type": "string",
334320
"anyOf": [
335321
{
336-
"const": "dynamic"
337-
},
338-
{
339-
"const": "prefer_dynamic"
340-
},
341-
{
342-
"const": "prefer_static"
343-
},
344-
{
345-
"const": "prefer-dynamic"
346-
},
347-
{
348-
"const": "prefer-static"
349-
},
350-
{
351-
"const": "static"
322+
"enum": [
323+
"dynamic",
324+
"prefer_dynamic",
325+
"prefer-dynamic",
326+
"prefer_static",
327+
"prefer-static",
328+
"static"
329+
]
352330
},
353331
{
354332
"type": "string"
@@ -370,19 +348,13 @@
370348
"type": "string",
371349
"anyOf": [
372350
{
373-
"const": "android"
374-
},
375-
{
376-
"const": "ios"
377-
},
378-
{
379-
"const": "linux"
380-
},
381-
{
382-
"const": "macos"
383-
},
384-
{
385-
"const": "windows"
351+
"enum": [
352+
"android",
353+
"ios",
354+
"linux",
355+
"macos",
356+
"windows"
357+
]
386358
},
387359
{
388360
"type": "string"

pkgs/json_syntax_generator/lib/src/parser/schema_analyzer.dart

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,7 @@ class SchemaAnalyzer {
8686
typeName ??= _ucFirst(_snakeToCamelCase(name!));
8787
if (_classes[typeName] != null) return; // Already analyzed.
8888

89-
final anyOf = schemas.anyOfs.single;
90-
final values =
91-
anyOf.map((e) => e.constValue).whereType<String>().toList()..sort();
89+
final values = schemas.enumOrTaggedUnionValues;
9290
_classes[typeName] = EnumClassInfo(
9391
name: typeName,
9492
enumValues: [
@@ -243,9 +241,7 @@ class SchemaAnalyzer {
243241

244242
final propertyKey = schemas.propertyKeys.single;
245243
final typeProperty = schemas.property(propertyKey);
246-
final anyOf = typeProperty.anyOfs.single;
247-
final subTypes =
248-
anyOf.map((e) => e.constValue).whereType<String>().toList();
244+
final subTypes = typeProperty.enumOrTaggedUnionValues;
249245
for (final subType in subTypes) {
250246
final ifThenSchemas = schemas.ifThenSchemas;
251247
final subTypeNameShort = _ucFirst(_snakeToCamelCase(subType));
@@ -591,6 +587,12 @@ extension type JsonSchemas._(List<JsonSchema> _schemas) {
591587
return result.singleOrNull;
592588
}
593589

590+
List<String> get enum_ => [
591+
for (final schema in _schemas)
592+
for (final value in schema.enumValues ?? [])
593+
if (value is String) value,
594+
];
595+
594596
List<Uri> get refs {
595597
final result = <Uri>[];
596598
for (final schema in _schemas) {
@@ -695,6 +697,14 @@ extension on JsonSchemas {
695697
}
696698
throw StateError('No super class schema found for $parentClassName.');
697699
}
700+
701+
List<String> get enumOrTaggedUnionValues => [
702+
for (final schema in _schemas)
703+
for (final s in schema.anyOf) ...[
704+
if (s.constValue is String) s.constValue as String,
705+
...s.enumValues?.whereType<String>() ?? [],
706+
],
707+
]..sort();
698708
}
699709

700710
extension on String {

0 commit comments

Comments
 (0)