in packages/Ludown/lib/parseFileContents.js [1087:1176]
const parseAndHandleModelInfo = function (parsedContent, luResource, log) {
// handle model info
let modelInfos = luResource.ModelInfos;
if (modelInfos && modelInfos.length > 0) {
for (const modelInfo of modelInfos) {
let line = modelInfo.ModelInfo
let kvPair = line.split(/@(app|kb|intent|entity).(.*)=/g).map(item => item.trim());
if (kvPair.length === 4) {
let hasError = false;
kvPair.forEach(item => {
if (item.trim() === '') {
if (log) {
process.stdout.write(chalk.default.yellowBright('[WARN]: Invalid model info found. Skipping "' + line + '"\n'));
}
hasError = true;
}
})
if(hasError) {
continue;
}
if (kvPair[1].toLowerCase() === 'app') {
parsedContent.LUISJsonStructure[kvPair[2]] = kvPair[3];
} else if (kvPair[1].toLowerCase() === 'kb') {
parsedContent.qnaJsonStructure[kvPair[2]] = kvPair[3];
} else if (kvPair[1].toLowerCase() === 'intent') {
if (kvPair[2].toLowerCase() === 'inherits') {
let inheritsProperties = kvPair[3].split(/[:;]/g).map(item => item.trim());
if (inheritsProperties.length !== 6) {
process.stdout.write(chalk.default.yellowBright('[WARN]: Invalid intent inherits information found. Skipping "' + line + '"\n'));
} else {
// find the intent
let intent = parsedContent.LUISJsonStructure.intents.find(item => item.name == inheritsProperties[1]);
if (intent === undefined) {
let newIntent = {
"name": inheritsProperties[1],
"inherits": {}
};
newIntent['inherits'][inheritsProperties[2]] = inheritsProperties[3];
newIntent['inherits'][inheritsProperties[4]] = inheritsProperties[5];
parsedContent.LUISJsonStructure.intents.push(newIntent);
} else {
if (intent['inherits'] === undefined) intent['inherits'] = {};
intent['inherits'][inheritsProperties[2]] = inheritsProperties[3];
intent['inherits'][inheritsProperties[4]] = inheritsProperties[5];
}
}
} else {
if (log) {
process.stdout.write(chalk.default.yellowBright('[WARN]: Invalid intent inherits information found. Skipping "' + line + '"\n'));
}
}
} else if (kvPair[1].toLowerCase() === 'entity') {
if (kvPair[2].toLowerCase() === 'inherits') {
let inheritsProperties = kvPair[3].split(/[:;]/g).map(item => item.trim());
if (inheritsProperties.length !== 6) {
process.stdout.write(chalk.default.yellowBright('[WARN]: Invalid entity inherits information found. Skipping "' + line + '"\n'));
} else {
// find the intent
let entity = parsedContent.LUISJsonStructure.entities.find(item => item.name == inheritsProperties[1]);
if (entity === undefined) {
let newEntity = {
"name": inheritsProperties[1],
"inherits": {}
};
newEntity['inherits'][inheritsProperties[2]] = inheritsProperties[3];
newEntity['inherits'][inheritsProperties[4]] = inheritsProperties[5];
parsedContent.LUISJsonStructure.entities.push(newEntity);
} else {
if (entity['inherits'] === undefined) entity['inherits'] = {};
entity['inherits'][inheritsProperties[2]] = inheritsProperties[3];
entity['inherits'][inheritsProperties[4]] = inheritsProperties[5];
}
}
} else {
if (log) {
process.stdout.write(chalk.default.yellowBright('[WARN]: Invalid entity inherits information found. Skipping "' + line + '"\n'));
}
}
}
} else {
if (log) {
process.stdout.write(chalk.default.yellowBright('[WARN]: Invalid model info found. Skipping "' + line + '"\n'));
}
}
}
}
}