Skip to content

Commit eea14a6

Browse files
committed
Add type generation support for geometric types (point, linestring, polygon)
This commit adds support for generating types for geometric attributes (POINT, LINESTRING, POLYGON) across all supported languages in the CLI type generation feature. Type mappings: - TypeScript/JavaScript: Array<number>, Array<Array<number>>, Array<Array<Array<number>>> - C#/Dart/Java/Kotlin: List<double>/List<List<double>>/List<List<List<double>>> - PHP: array (for all geometric types) - Swift: [Double], [[Double]], [[[Double]]] Changes include: - Added POINT, LINESTRING, POLYGON to AttributeType enum - Implemented type mapping logic for all language generators
1 parent dc6720b commit eea14a6

File tree

9 files changed

+71
-0
lines changed

9 files changed

+71
-0
lines changed

templates/cli/lib/type-generation/attribute.js.twig

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ const AttributeType = {
99
URL: "url",
1010
ENUM: "enum",
1111
RELATIONSHIP: "relationship",
12+
POINT: "point",
13+
LINESTRING: "linestring",
14+
POLYGON: "polygon",
1215
};
1316

1417
module.exports = {

templates/cli/lib/type-generation/languages/csharp.js.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@ class CSharp extends LanguageMeta {
3333
type = `List<${type}>`;
3434
}
3535
break;
36+
case AttributeType.POINT:
37+
type = "List<double>";
38+
break;
39+
case AttributeType.LINESTRING:
40+
type = "List<List<double>>";
41+
break;
42+
case AttributeType.POLYGON:
43+
type = "List<List<List<double>>>";
44+
break;
3645
default:
3746
throw new Error(`Unknown attribute type: ${attribute.type}`);
3847
}

templates/cli/lib/type-generation/languages/dart.js.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ class Dart extends LanguageMeta {
7070
type = `List<${type}>`;
7171
}
7272
break;
73+
case AttributeType.POINT:
74+
type = "List<double>";
75+
break;
76+
case AttributeType.LINESTRING:
77+
type = "List<List<double>>";
78+
break;
79+
case AttributeType.POLYGON:
80+
type = "List<List<List<double>>>";
81+
break;
7382
default:
7483
throw new Error(`Unknown attribute type: ${attribute.type}`);
7584
}

templates/cli/lib/type-generation/languages/java.js.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@ class Java extends LanguageMeta {
3333
type = "List<" + type + ">";
3434
}
3535
break;
36+
case AttributeType.POINT:
37+
type = "List<Double>";
38+
break;
39+
case AttributeType.LINESTRING:
40+
type = "List<List<Double>>";
41+
break;
42+
case AttributeType.POLYGON:
43+
type = "List<List<List<Double>>>";
44+
break;
3645
default:
3746
throw new Error(`Unknown attribute type: ${attribute.type}`);
3847
}

templates/cli/lib/type-generation/languages/javascript.js.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ class JavaScript extends LanguageMeta {
3838
type = `${type}[]`;
3939
}
4040
break;
41+
case AttributeType.POINT:
42+
type = "number[]";
43+
break;
44+
case AttributeType.LINESTRING:
45+
type = "number[][]";
46+
break;
47+
case AttributeType.POLYGON:
48+
type = "number[][][]";
49+
break;
4150
default:
4251
throw new Error(`Unknown attribute type: ${attribute.type}`);
4352
}

templates/cli/lib/type-generation/languages/kotlin.js.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@ class Kotlin extends LanguageMeta {
3333
type = `List<${type}>`;
3434
}
3535
break;
36+
case AttributeType.POINT:
37+
type = "List<Double>";
38+
break;
39+
case AttributeType.LINESTRING:
40+
type = "List<List<Double>>";
41+
break;
42+
case AttributeType.POLYGON:
43+
type = "List<List<List<Double>>>";
44+
break;
3645
default:
3746
throw new Error(`Unknown attribute type: ${attribute.type}`);
3847
}

templates/cli/lib/type-generation/languages/php.js.twig

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ class PHP extends LanguageMeta {
3636
type = "array";
3737
}
3838
break;
39+
case AttributeType.POINT:
40+
case AttributeType.LINESTRING:
41+
case AttributeType.POLYGON:
42+
type = "array";
43+
break;
3944
default:
4045
throw new Error(`Unknown attribute type: ${attribute.type}`);
4146
}

templates/cli/lib/type-generation/languages/swift.js.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,15 @@ class Swift extends LanguageMeta {
3333
type = `[${type}]`;
3434
}
3535
break;
36+
case AttributeType.POINT:
37+
type = "[Double]";
38+
break;
39+
case AttributeType.LINESTRING:
40+
type = "[[Double]]";
41+
break;
42+
case AttributeType.POLYGON:
43+
type = "[[[Double]]]";
44+
break;
3645
default:
3746
throw new Error(`Unknown attribute type: ${attribute.type}`);
3847
}

templates/cli/lib/type-generation/languages/typescript.js.twig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ class TypeScript extends LanguageMeta {
3838
type = `${type}[]`;
3939
}
4040
break;
41+
case AttributeType.POINT:
42+
type = "Array<number>";
43+
break;
44+
case AttributeType.LINESTRING:
45+
type = "Array<Array<number>>";
46+
break;
47+
case AttributeType.POLYGON:
48+
type = "Array<Array<Array<number>>>";
49+
break;
4150
default:
4251
throw new Error(`Unknown attribute type: ${attribute.type}`);
4352
}

0 commit comments

Comments
 (0)