Skip to content

Commit b66fdee

Browse files
authored
Merge pull request #10 from cdsiats/main
fixes #9 16h
2 parents d7f61cd + 5ecda4a commit b66fdee

File tree

4 files changed

+2324
-5
lines changed

4 files changed

+2324
-5
lines changed

packages/idea-parser/src/definitions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ const definitions: Record<string, Reader> = {
131131
};
132132
},
133133
'Float': (code, start) => {
134-
const match = code.slice(start).match(/^\d+\.\d+/);
134+
const match = code.slice(start).match(/^-?\d+\.\d+/);
135135
if (match !== null && match.index === 0) {
136136
const end = start + match[0].length;
137137
const value = code.substring(start, end);
@@ -147,7 +147,7 @@ const definitions: Record<string, Reader> = {
147147
return undefined;
148148
},
149149
'Integer': (code, start) => {
150-
const match = code.slice(start).match(/^[0-9]+/);
150+
const match = code.slice(start).match(/^-?[0-9]+/);
151151
if (match !== null && match.index === 0) {
152152
const end = start + match[0].length;
153153
const value = code.substring(start, end);

packages/idea-parser/tests/ModelTree.test.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,13 @@ describe('Model Tree', () => {
5151
expect(() => modelTree.parse('model foobar')).to.throw('Expected CapitalIdentifier but got something else');
5252
});
5353

54-
55-
56-
54+
it('Should parse negative values', async () => {
55+
const actualRaw = ModelTree.parse(fs.readFileSync(`${__dirname}/fixtures/address.idea`, 'utf8'));
56+
const expectedRaw = JSON.parse(fs.readFileSync(`${__dirname}/fixtures/address.json`, 'utf8'));
57+
58+
const actual = cleanAST(actualRaw);
59+
const expected = cleanAST(expectedRaw);
60+
61+
expect(actual).to.deep.equalInAnyOrder(expected);
62+
});
5763
});
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
model Address
2+
@label("Address" "Addresses")
3+
@template("{{label}}")
4+
@icon("map-marker")
5+
{
6+
id String @label("Places ID") @id
7+
@list.overflow({ length 10 hellip true })
8+
9+
formatted String @label("Formatted Address")
10+
@field.text
11+
@is.required
12+
@list.text @view.text
13+
14+
street String @label("Street Address")
15+
@field.text
16+
@is.required
17+
@list.text @view.text
18+
19+
neighborhood String? @label("Neighborhood")
20+
@field.text
21+
@list.text @view.text
22+
23+
city String @label("City")
24+
@field.text
25+
@is.required
26+
@list.text @view.text
27+
28+
state String? @label("State")
29+
@field.text
30+
@list.text @view.text
31+
32+
region String? @label("Region")
33+
@field.text
34+
@list.text @view.text
35+
36+
country String @label("Country")
37+
@field.text
38+
@is.required
39+
@list.text @view.text
40+
41+
postal String @label("Postal Code")
42+
@field.text
43+
@is.required
44+
@list.text @view.text
45+
46+
latitude Float? @label("Latitude")
47+
@min(-90) @max(90) @step(0.00000001)
48+
@field.number({ min -90 max 90 step 0.00000001 })
49+
@is.gte(-90) @is.lte(90)
50+
@list.hide @view.number
51+
52+
longitude Float? @label("Longitude")
53+
@min(-180) @max(180) @step(0.00000001)
54+
@field.number({ min -180 max 180 step 0.00000001 })
55+
@is.gte(-180) @is.lte(180)
56+
@list.hide @view.number
57+
58+
active Boolean @label("Active")
59+
@default(true)
60+
@filter.switch
61+
@list.hide @view.yesno
62+
63+
created Datetime @label("Created")
64+
@default("now()") @sortable
65+
@list.date("m d, Y h:iA")
66+
@view.date("m d, Y h:iA")
67+
68+
updated Datetime @label("Updated")
69+
@default("now()") @timestamp @sortable
70+
@list.date("m d, Y h:iA")
71+
@view.date("m d, Y h:iA")
72+
}

0 commit comments

Comments
 (0)