add initial marp implementation with sample content and build configuration
This commit is contained in:
77
node_modules/speech-rule-engine/js/l10n/transformers.js
generated
vendored
Normal file
77
node_modules/speech-rule-engine/js/l10n/transformers.js
generated
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Combiners = void 0;
|
||||
exports.pluralCase = pluralCase;
|
||||
exports.identityTransformer = identityTransformer;
|
||||
exports.siCombiner = siCombiner;
|
||||
exports.convertVulgarFraction = convertVulgarFraction;
|
||||
exports.vulgarFractionSmall = vulgarFractionSmall;
|
||||
const semantic_meaning_js_1 = require("../semantic_tree/semantic_meaning.js");
|
||||
function pluralCase(num, _plural) {
|
||||
return num.toString();
|
||||
}
|
||||
function identityTransformer(input) {
|
||||
return input.toString();
|
||||
}
|
||||
function siCombiner(prefix, unit) {
|
||||
return prefix + unit.toLowerCase();
|
||||
}
|
||||
exports.Combiners = {};
|
||||
exports.Combiners.identityCombiner = function (a, b, c) {
|
||||
return a + b + c;
|
||||
};
|
||||
exports.Combiners.prefixCombiner = function (letter, font, cap) {
|
||||
letter = cap ? cap + ' ' + letter : letter;
|
||||
return font ? font + ' ' + letter : letter;
|
||||
};
|
||||
exports.Combiners.postfixCombiner = function (letter, font, cap) {
|
||||
letter = cap ? cap + ' ' + letter : letter;
|
||||
return font ? letter + ' ' + font : letter;
|
||||
};
|
||||
exports.Combiners.romanceCombiner = function (letter, font, cap) {
|
||||
letter = cap ? letter + ' ' + cap : letter;
|
||||
return font ? letter + ' ' + font : letter;
|
||||
};
|
||||
function convertVulgarFraction(node, over = '') {
|
||||
if (!node.childNodes ||
|
||||
!node.childNodes[0] ||
|
||||
!node.childNodes[0].childNodes ||
|
||||
node.childNodes[0].childNodes.length < 2 ||
|
||||
node.childNodes[0].childNodes[0].tagName !==
|
||||
semantic_meaning_js_1.SemanticType.NUMBER ||
|
||||
node.childNodes[0].childNodes[0].getAttribute('role') !==
|
||||
semantic_meaning_js_1.SemanticRole.INTEGER ||
|
||||
node.childNodes[0].childNodes[1].tagName !==
|
||||
semantic_meaning_js_1.SemanticType.NUMBER ||
|
||||
node.childNodes[0].childNodes[1].getAttribute('role') !==
|
||||
semantic_meaning_js_1.SemanticRole.INTEGER) {
|
||||
return { convertible: false, content: node.textContent };
|
||||
}
|
||||
const denStr = node.childNodes[0].childNodes[1].textContent;
|
||||
const enumStr = node.childNodes[0].childNodes[0].textContent;
|
||||
const denominator = Number(denStr);
|
||||
const enumerator = Number(enumStr);
|
||||
if (isNaN(denominator) || isNaN(enumerator)) {
|
||||
return {
|
||||
convertible: false,
|
||||
content: `${enumStr} ${over} ${denStr}`
|
||||
};
|
||||
}
|
||||
return {
|
||||
convertible: true,
|
||||
enumerator: enumerator,
|
||||
denominator: denominator
|
||||
};
|
||||
}
|
||||
function vulgarFractionSmall(node, enumer, denom) {
|
||||
const conversion = convertVulgarFraction(node);
|
||||
if (conversion.convertible) {
|
||||
const enumerator = conversion.enumerator;
|
||||
const denominator = conversion.denominator;
|
||||
return (enumerator > 0 &&
|
||||
enumerator < enumer &&
|
||||
denominator > 0 &&
|
||||
denominator < denom);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user