Skip to content
This repository was archived by the owner on Jan 15, 2025. It is now read-only.

Commit 5e319ae

Browse files
authored
regex_entities alternative format fix (#857)
1 parent 87e42ae commit 5e319ae

File tree

8 files changed

+99
-4
lines changed

8 files changed

+99
-4
lines changed

packages/luis/src/commands/luis/generate/cs.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,17 @@ export default class LuisGenerateCs extends Command {
2424

2525
}
2626

27+
renameProp(
28+
oldProp: string,
29+
newProp: string,
30+
{[oldProp]: old, ...others}
31+
): any {
32+
return {
33+
[newProp]: old,
34+
...others
35+
}
36+
}
37+
2738
reorderEntities(app: any, name: string): void {
2839
if (app[name] !== null && app[name] !== undefined) {
2940
app[name].sort((a: any, b: any) => (a.name > b.name ? 1 : -1))
@@ -57,6 +68,10 @@ export default class LuisGenerateCs extends Command {
5768
flags.className = upperFirst(camelCase(flags.className))
5869
}
5970

71+
if ('regexEntities' in app) {
72+
app = this.renameProp('regexEntities', 'regex_entities', app)
73+
}
74+
6075
this.reorderEntities(app, 'entities')
6176
this.reorderEntities(app, 'prebuiltEntities')
6277
this.reorderEntities(app, 'closedLists')

packages/luis/src/commands/luis/generate/ts.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,17 @@ export default class LuisGenerateTs extends Command {
2222
help: flags.help({char: 'h', description: 'luis:generate:ts help'}),
2323
}
2424

25+
renameProp(
26+
oldProp: string,
27+
newProp: string,
28+
{[oldProp]: old, ...others}
29+
): any {
30+
return {
31+
[newProp]: old,
32+
...others
33+
}
34+
}
35+
2536
reorderEntities(app: any, name: string): void {
2637
if (app[name] !== null && app[name] !== undefined) {
2738
app[name].sort((a: any, b: any) => (a.name > b.name ? 1 : -1))
@@ -48,6 +59,10 @@ export default class LuisGenerateTs extends Command {
4859
flags.className = flags.className || app.name
4960
flags.className = upperFirst(camelCase(flags.className))
5061

62+
if ('regexEntities' in app) {
63+
app = this.renameProp('regexEntities', 'regex_entities', app)
64+
}
65+
5166
this.reorderEntities(app, 'entities')
5267
this.reorderEntities(app, 'prebuiltEntities')
5368
this.reorderEntities(app, 'closedLists')

packages/luis/test/commands/luis/generate/cs.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,17 @@ describe('luis:generate:cs', () => {
8484
.it('Generates regex entities correctly', async () => {
8585
await compareSourceFiles('../../../fixtures/generate/RegexEntities.cs', '../../../fixtures/generate/results/RegexEntities.cs')
8686
})
87+
88+
test
89+
.stdout()
90+
.command(['luis:generate:cs',
91+
'--in',
92+
`${path.join(__dirname, '../../../fixtures/generate/RegexEntities2.json')}`,
93+
'--out',
94+
`${path.join(__dirname, '../../../fixtures/generate/results/RegexEntities2.cs')}`])
95+
.it('Generates regex entities with alternative format correctly', async () => {
96+
await compareSourceFiles('../../../fixtures/generate/RegexEntities.cs', '../../../fixtures/generate/results/RegexEntities2.cs')
97+
})
8798

8899
test
89100
.stdout()

packages/luis/test/commands/luis/generate/ts.test.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,17 @@ describe('luis:generate:ts', () => {
9696
.it('Generates regex entities correctly', async () => {
9797
await compareSourceFiles('../../../fixtures/generate/regex-entities.ts', '../../../fixtures/generate/results/regex-entities.ts')
9898
})
99+
100+
test
101+
.stdout()
102+
.command(['luis:generate:ts',
103+
'--in',
104+
`${path.join(__dirname, '../../../fixtures/generate/RegexEntities2.json')}`,
105+
'--out',
106+
`${path.join(__dirname, '../../../fixtures/generate/results/regex-entities2.ts')}`])
107+
.it('Generates regex entities with alternative format correctly', async () => {
108+
await compareSourceFiles('../../../fixtures/generate/regex-entities.ts', '../../../fixtures/generate/results/regex-entities2.ts')
109+
})
99110

100111
test
101112
.stdout()

packages/luis/test/fixtures/generate/RegexEntities.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,18 @@ public enum Intent {
2727

2828
public class _Entities
2929
{
30+
// Regex entities
31+
public string[] Part;
32+
public string[] buy;
33+
public string[] sell;
34+
3035

3136
// Instance
3237
public class _Instance
3338
{
39+
public InstanceData[] Part;
40+
public InstanceData[] buy;
41+
public InstanceData[] sell;
3442
}
3543
[JsonProperty("$instance")]
3644
public _Instance _instance;

packages/luis/test/fixtures/generate/RegexEntities.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@
1010
"composites": [],
1111
"closedLists": [],
1212
"patternAnyEntities": [],
13-
"regex_entities": [],
14-
"prebuiltEntities": [],
15-
"model_features": [],
16-
"regex_features": [
13+
"regex_entities": [
1714
{
1815
"name": "Part",
1916
"regexPattern": "kb[0-9]+",
@@ -23,6 +20,9 @@
2320
]
2421
}
2522
],
23+
"prebuiltEntities": [],
24+
"model_features": [],
25+
"regex_features": [],
2626
"patterns": [],
2727
"utterances": [],
2828
"settings": []
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"luis_schema_version": "3.2.0",
3+
"versionId": "GeoPeople",
4+
"name": "Contoso App",
5+
"desc": "Default Intents for Azure Bot Service V2",
6+
"culture": "en-us",
7+
"tokenizerVersion": "1.0.0",
8+
"intents": [],
9+
"entities": [],
10+
"composites": [],
11+
"closedLists": [],
12+
"patternAnyEntities": [],
13+
"regexEntities": [
14+
{
15+
"name": "Part",
16+
"regexPattern": "kb[0-9]+",
17+
"roles": [
18+
"buy",
19+
"sell"
20+
]
21+
}
22+
],
23+
"prebuiltEntities": [],
24+
"model_features": [],
25+
"regexFeatures": [],
26+
"patterns": [],
27+
"utterances": [],
28+
"settings": []
29+
}

packages/luis/test/fixtures/generate/regex-entities.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ export interface GeneratedIntents {
1212
}
1313

1414
export interface GeneratedInstance {
15+
Part?: InstanceData[]
16+
buy?: InstanceData[]
17+
sell?: InstanceData[]
1518
}
1619

1720
export interface GeneratedEntities {
@@ -22,6 +25,9 @@ export interface GeneratedEntities {
2225
// Lists
2326

2427
// Regex entities
28+
Part?: string[]
29+
buy?: string[]
30+
sell?: string[]
2531

2632
// Pattern.any
2733

0 commit comments

Comments
 (0)