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

Commit de71c51

Browse files
authored
Fix prebuilt entity name comparison to be case-insensitive (#1163)
* fix prebuilt entity name compare * update test case * fix typo * typo 2
1 parent 2aac9b5 commit de71c51

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

packages/lu/src/parser/lufile/parseFileContents.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,7 +1004,7 @@ const parseAndHandleSimpleIntentSection = function (parsedContent, luResource, c
10041004
throw (new exception(retCode.errorCode.INVALID_INPUT, error.toString(), [error]));
10051005
}
10061006

1007-
let prebuiltEntities = entitiesFound.filter(item => builtInTypes.consolidatedList.includes(item.entity));
1007+
let prebuiltEntities = entitiesFound.filter(item => builtInTypes.consolidatedList.map(prebuiltEntity => prebuiltEntity.toLowerCase()).includes(item.entity.toLowerCase()));
10081008
prebuiltEntities.forEach(prebuiltEntity => {
10091009
if (parsedContent.LUISJsonStructure.prebuiltEntities.findIndex(e => e.name === prebuiltEntity.entity) < 0) {
10101010
let errorMsg = `Pattern "${utteranceAndEntities.contextText}" has prebuilt entity ${prebuiltEntity.entity}. Please define it explicitly with @ prebuilt ${prebuiltEntity.entity}.`;
@@ -1290,7 +1290,7 @@ const getEntityType = function(entityName, entities) {
12901290
let entityFound = (entities || []).find(item => item.Name == entityName || item.Name == `${entityName}(interchangeable)`);
12911291
if (entityFound && entityFound.Type !== undefined) return entityFound.Type
12921292
// see if this one of the prebuilt type
1293-
if (builtInTypes.consolidatedList.includes(entityName)) return EntityTypeEnum.PREBUILT
1293+
if (builtInTypes.consolidatedList.map(item => item.toLowerCase()).includes(entityName.toLowerCase())) return EntityTypeEnum.PREBUILT
12941294
return undefined;
12951295
};
12961296

@@ -1786,7 +1786,7 @@ const handlePrebuiltEntity = function(parsedContent, entityName, entityType, ent
17861786
throw (err);
17871787
}
17881788
// verify if the requested entityType is available in the requested locale
1789-
if (!builtInTypes.consolidatedList.includes(entityType)) {
1789+
if (!builtInTypes.consolidatedList.map(item => item.toLowerCase()).includes(entityType.toLowerCase())) {
17901790
let errorMsg = `Unknown PREBUILT entity '${entityType}'. Available pre-built types are ${builtInTypes.consolidatedList.join(',')}`;
17911791
let error = BuildDiagnostic({
17921792
message: errorMsg,
@@ -2016,7 +2016,7 @@ const parseAndHandleEntitySection = function (parsedContent, luResource, log, lo
20162016

20172017
// add this entity to appropriate place
20182018
// is this a builtin type?
2019-
if (builtInTypes.consolidatedList.includes(entityType)) {
2019+
if (builtInTypes.consolidatedList.map(item => item.toLowerCase()).includes(entityType.toLowerCase())) {
20202020
handlePrebuiltEntity(parsedContent, entityName, entityType, entityRoles, locale, log, entity.Range, config);
20212021
} else if (entityType.toLowerCase() === 'simple') {
20222022
// add this to entities if it doesnt exist

packages/lu/test/parser/lufile/parseFileContents.NewEntityDefinition.test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -738,12 +738,14 @@ describe('V2 Entity definitions using @ notation', function () {
738738
it('Basic prebuilt entity definition works', function(done){
739739
let luFile = `
740740
@prebuilt number
741+
@prebuilt phoneNumber
741742
`;
742743

743744
parseFile.parseFile(luFile)
744745
.then(res => {
745-
assert.equal(res.LUISJsonStructure.prebuiltEntities.length, 1);
746+
assert.equal(res.LUISJsonStructure.prebuiltEntities.length, 2);
746747
assert.equal(res.LUISJsonStructure.prebuiltEntities[0].name, 'number');
748+
assert.equal(res.LUISJsonStructure.prebuiltEntities[1].name, 'phoneNumber');
747749
done();
748750
})
749751
.catch(err => done(err))

0 commit comments

Comments
 (0)