@antv/narrative-text-schema
Version:
Json schema of narrative text visualization
65 lines • 4.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateSentence = void 0;
/**
* parse string template to phrases
* @example
* str = `<%= time %>, <%= columnAlias$$metric_name$$ %> is <%= price$$metric_value$$ %>`
* data = { time: "2020", columnAlias: "price total", price: "123" }
* =>
* [
* { type: "text", value: "2020" },
* { type: "text", value: ", " },
* { type: "entity", value: "price total", metadata: { entityType: metric_name } },
* { type: "text", value: " is " },
* { type: "entity", value: "123", metadata: { entityType: metric_value } },
* ]
*/
function generateSentence(template, formattedData, originalData) {
var splitReg = /(<%= [\s\S]*?(::\w*?)? %>)/;
var variableReg = /<%= ([\s\S]*?)(\$\$(\w*)\$\$)? %>/;
return template.split(splitReg).reduce(function (prev, curr) {
if (curr) {
var variable = variableReg.exec(curr);
if (variable && variable[1] && formattedData && typeof formattedData[variable[1]] === 'string') {
var formattedVal = formattedData[variable[1]];
if (variable[3]) {
var eType = variable[3];
var result = {
type: 'entity',
value: formattedVal,
metadata: {
entityType: eType,
},
};
var origin_1 = originalData ? originalData[variable[1]] : undefined;
if ((result.metadata.entityType === 'delta_value' || result.metadata.entityType === 'ratio_value') &&
typeof origin_1 === 'number') {
if (origin_1 > 0) {
result.metadata.assessment = 'positive';
}
if (origin_1 < 0) {
result.metadata.assessment = 'negative';
}
}
prev.push(result);
}
else {
prev.push({
type: 'text',
value: formattedVal,
});
}
}
else {
prev.push({
type: 'text',
value: curr,
});
}
}
return prev;
}, []);
}
exports.generateSentence = generateSentence;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixRQUFnQixFQUNoQixhQUFzQyxFQUN0QyxZQUFzQztJQUV0QyxJQUFNLFFBQVEsR0FBRyw0QkFBNEIsQ0FBQztJQUM5QyxJQUFNLFdBQVcsR0FBRyxtQ0FBbUMsQ0FBQztJQUN4RCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFlLFVBQUMsSUFBSSxFQUFFLElBQUk7UUFDOUQsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxhQUFhLElBQUksT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUM5RixJQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNmLElBQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQWUsQ0FBQztvQkFDeEMsSUFBTSxNQUFNLEdBQWU7d0JBQ3pCLElBQUksRUFBRSxRQUFRO3dCQUNkLEtBQUssRUFBRSxZQUFZO3dCQUNuQixRQUFRLEVBQUU7NEJBQ1IsVUFBVSxFQUFFLEtBQUs7eUJBQ2xCO3FCQUNGLENBQUM7b0JBRUYsSUFBTSxRQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDcEUsSUFDRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLGFBQWEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxhQUFhLENBQUM7d0JBQzlGLE9BQU8sUUFBTSxLQUFLLFFBQVEsRUFDMUI7d0JBQ0EsSUFBSSxRQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUNkLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQzt5QkFDekM7d0JBQ0QsSUFBSSxRQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUNkLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQzt5QkFDekM7cUJBQ0Y7b0JBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDbkI7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQzt3QkFDUixJQUFJLEVBQUUsTUFBTTt3QkFDWixLQUFLLEVBQUUsWUFBWTtxQkFDcEIsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDUixJQUFJLEVBQUUsTUFBTTtvQkFDWixLQUFLLEVBQUUsSUFBSTtpQkFDWixDQUFDLENBQUM7YUFDSjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDO0FBbkRELDRDQW1EQyJ9