123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import { SemanticRole, SemanticType } from '../semantic_tree/semantic_meaning.js';
- export function pluralCase(num, _plural) {
- return num.toString();
- }
- export function identityTransformer(input) {
- return input.toString();
- }
- export function siCombiner(prefix, unit) {
- return prefix + unit.toLowerCase();
- }
- export const Combiners = {};
- Combiners.identityCombiner = function (a, b, c) {
- return a + b + c;
- };
- Combiners.prefixCombiner = function (letter, font, cap) {
- letter = cap ? cap + ' ' + letter : letter;
- return font ? font + ' ' + letter : letter;
- };
- Combiners.postfixCombiner = function (letter, font, cap) {
- letter = cap ? cap + ' ' + letter : letter;
- return font ? letter + ' ' + font : letter;
- };
- Combiners.romanceCombiner = function (letter, font, cap) {
- letter = cap ? letter + ' ' + cap : letter;
- return font ? letter + ' ' + font : letter;
- };
- export 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 !==
- SemanticType.NUMBER ||
- node.childNodes[0].childNodes[0].getAttribute('role') !==
- SemanticRole.INTEGER ||
- node.childNodes[0].childNodes[1].tagName !==
- SemanticType.NUMBER ||
- node.childNodes[0].childNodes[1].getAttribute('role') !==
- 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
- };
- }
- export 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;
- }
|