123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.isType = isType;
- exports.isRole = isRole;
- exports.isAccent = isAccent;
- exports.isSimpleFunctionScope = isSimpleFunctionScope;
- exports.isPrefixFunctionBoundary = isPrefixFunctionBoundary;
- exports.isBigOpBoundary = isBigOpBoundary;
- exports.isIntegralDxBoundary = isIntegralDxBoundary;
- exports.isIntegralDxBoundarySingle = isIntegralDxBoundarySingle;
- exports.isGeneralFunctionBoundary = isGeneralFunctionBoundary;
- exports.isEmbellished = isEmbellished;
- exports.isOperator = isOperator;
- exports.isRelation = isRelation;
- exports.isPunctuation = isPunctuation;
- exports.isFence = isFence;
- exports.isElligibleEmbellishedFence = isElligibleEmbellishedFence;
- exports.isTableOrMultiline = isTableOrMultiline;
- exports.tableIsMatrixOrVector = tableIsMatrixOrVector;
- exports.isFencedElement = isFencedElement;
- exports.tableIsCases = tableIsCases;
- exports.tableIsMultiline = tableIsMultiline;
- exports.lineIsLabelled = lineIsLabelled;
- exports.isBinomial = isBinomial;
- exports.isLimitBase = isLimitBase;
- exports.isSimpleFunctionHead = isSimpleFunctionHead;
- exports.singlePunctAtPosition = singlePunctAtPosition;
- exports.isSimpleFunction = isSimpleFunction;
- exports.isSetNode = isSetNode;
- exports.isSingletonSetContent = isSingletonSetContent;
- exports.isUnitCounter = isUnitCounter;
- exports.isPureUnit = isPureUnit;
- exports.isUnitProduct = isUnitProduct;
- exports.isImplicit = isImplicit;
- exports.isImplicitOp = isImplicitOp;
- exports.isNeutralFence = isNeutralFence;
- exports.compareNeutralFences = compareNeutralFences;
- exports.elligibleLeftNeutral = elligibleLeftNeutral;
- exports.elligibleRightNeutral = elligibleRightNeutral;
- exports.isMembership = isMembership;
- const semantic_attr_js_1 = require("./semantic_attr.js");
- const semantic_meaning_js_1 = require("./semantic_meaning.js");
- const semantic_util_js_1 = require("./semantic_util.js");
- function isType(node, attr) {
- return node.type === attr;
- }
- function embellishedType(node, attr) {
- return node.embellished === attr;
- }
- function isRole(node, attr) {
- return node.role === attr;
- }
- function isAccent(node) {
- return (isType(node, semantic_meaning_js_1.SemanticType.FENCE) ||
- isType(node, semantic_meaning_js_1.SemanticType.PUNCTUATION) ||
- isType(node, semantic_meaning_js_1.SemanticType.OPERATOR) ||
- isType(node, semantic_meaning_js_1.SemanticType.RELATION));
- }
- function isSimpleFunctionScope(node) {
- const children = node.childNodes;
- if (children.length === 0) {
- return true;
- }
- if (children.length > 1) {
- return false;
- }
- const child = children[0];
- if (child.type === semantic_meaning_js_1.SemanticType.INFIXOP) {
- if (child.role !== semantic_meaning_js_1.SemanticRole.IMPLICIT) {
- return false;
- }
- if (child.childNodes.some((x) => isType(x, semantic_meaning_js_1.SemanticType.INFIXOP))) {
- return false;
- }
- }
- return true;
- }
- function isPrefixFunctionBoundary(node) {
- return ((isOperator(node) && !isRole(node, semantic_meaning_js_1.SemanticRole.DIVISION)) ||
- isType(node, semantic_meaning_js_1.SemanticType.APPL) ||
- isGeneralFunctionBoundary(node));
- }
- function isBigOpBoundary(node) {
- return isOperator(node) || isGeneralFunctionBoundary(node);
- }
- function isIntegralDxBoundary(firstNode, secondNode) {
- return (!!secondNode &&
- isType(secondNode, semantic_meaning_js_1.SemanticType.IDENTIFIER) &&
- semantic_attr_js_1.SemanticMap.Secondary.has(firstNode.textContent, semantic_meaning_js_1.SemanticSecondary.D));
- }
- function isIntegralDxBoundarySingle(node) {
- if (isType(node, semantic_meaning_js_1.SemanticType.IDENTIFIER)) {
- const firstChar = node.textContent[0];
- return (firstChar &&
- node.textContent[1] &&
- semantic_attr_js_1.SemanticMap.Secondary.has(firstChar, semantic_meaning_js_1.SemanticSecondary.D));
- }
- return false;
- }
- function isGeneralFunctionBoundary(node) {
- return isRelation(node) || isPunctuation(node);
- }
- function isEmbellished(node) {
- if (node.embellished) {
- return node.embellished;
- }
- if (isEmbellishedType(node.type)) {
- return node.type;
- }
- return null;
- }
- function isEmbellishedType(type) {
- return (type === semantic_meaning_js_1.SemanticType.OPERATOR ||
- type === semantic_meaning_js_1.SemanticType.RELATION ||
- type === semantic_meaning_js_1.SemanticType.FENCE ||
- type === semantic_meaning_js_1.SemanticType.PUNCTUATION);
- }
- function isOperator(node) {
- return (isType(node, semantic_meaning_js_1.SemanticType.OPERATOR) ||
- embellishedType(node, semantic_meaning_js_1.SemanticType.OPERATOR));
- }
- function isRelation(node) {
- return (isType(node, semantic_meaning_js_1.SemanticType.RELATION) ||
- embellishedType(node, semantic_meaning_js_1.SemanticType.RELATION));
- }
- function isPunctuation(node) {
- return (isType(node, semantic_meaning_js_1.SemanticType.PUNCTUATION) ||
- embellishedType(node, semantic_meaning_js_1.SemanticType.PUNCTUATION));
- }
- function isFence(node) {
- return (isType(node, semantic_meaning_js_1.SemanticType.FENCE) ||
- embellishedType(node, semantic_meaning_js_1.SemanticType.FENCE));
- }
- function isElligibleEmbellishedFence(node) {
- if (!node || !isFence(node)) {
- return false;
- }
- if (!node.embellished) {
- return true;
- }
- return recurseBaseNode(node);
- }
- function bothSide(node) {
- return (isType(node, semantic_meaning_js_1.SemanticType.TENSOR) &&
- (!isType(node.childNodes[1], semantic_meaning_js_1.SemanticType.EMPTY) ||
- !isType(node.childNodes[2], semantic_meaning_js_1.SemanticType.EMPTY)) &&
- (!isType(node.childNodes[3], semantic_meaning_js_1.SemanticType.EMPTY) ||
- !isType(node.childNodes[4], semantic_meaning_js_1.SemanticType.EMPTY)));
- }
- function recurseBaseNode(node) {
- if (!node.embellished) {
- return true;
- }
- if (bothSide(node)) {
- return false;
- }
- if (isRole(node, semantic_meaning_js_1.SemanticRole.CLOSE) && isType(node, semantic_meaning_js_1.SemanticType.TENSOR)) {
- return false;
- }
- if (isRole(node, semantic_meaning_js_1.SemanticRole.OPEN) &&
- (isType(node, semantic_meaning_js_1.SemanticType.SUBSCRIPT) ||
- isType(node, semantic_meaning_js_1.SemanticType.SUPERSCRIPT))) {
- return false;
- }
- return recurseBaseNode(node.childNodes[0]);
- }
- function isTableOrMultiline(node) {
- return (!!node &&
- (isType(node, semantic_meaning_js_1.SemanticType.TABLE) || isType(node, semantic_meaning_js_1.SemanticType.MULTILINE)));
- }
- function tableIsMatrixOrVector(node) {
- return (!!node && isFencedElement(node) && isTableOrMultiline(node.childNodes[0]));
- }
- function isFencedElement(node) {
- return (!!node &&
- isType(node, semantic_meaning_js_1.SemanticType.FENCED) &&
- (isRole(node, semantic_meaning_js_1.SemanticRole.LEFTRIGHT) || isNeutralFence(node)) &&
- node.childNodes.length === 1);
- }
- function tableIsCases(_table, prevNodes) {
- return (prevNodes.length > 0 &&
- isRole(prevNodes[prevNodes.length - 1], semantic_meaning_js_1.SemanticRole.OPENFENCE));
- }
- function tableIsMultiline(table) {
- return table.childNodes.every(function (row) {
- const length = row.childNodes.length;
- return length <= 1;
- });
- }
- function lineIsLabelled(line) {
- return (isType(line, semantic_meaning_js_1.SemanticType.LINE) &&
- line.contentNodes.length &&
- isRole(line.contentNodes[0], semantic_meaning_js_1.SemanticRole.LABEL));
- }
- function isBinomial(table) {
- return table.childNodes.length === 2;
- }
- function isLimitBase(node) {
- return (isType(node, semantic_meaning_js_1.SemanticType.LARGEOP) ||
- isType(node, semantic_meaning_js_1.SemanticType.LIMBOTH) ||
- isType(node, semantic_meaning_js_1.SemanticType.LIMLOWER) ||
- isType(node, semantic_meaning_js_1.SemanticType.LIMUPPER) ||
- (isType(node, semantic_meaning_js_1.SemanticType.FUNCTION) &&
- isRole(node, semantic_meaning_js_1.SemanticRole.LIMFUNC)) ||
- ((isType(node, semantic_meaning_js_1.SemanticType.OVERSCORE) ||
- isType(node, semantic_meaning_js_1.SemanticType.UNDERSCORE)) &&
- isLimitBase(node.childNodes[0])));
- }
- function isSimpleFunctionHead(node) {
- return (node.type === semantic_meaning_js_1.SemanticType.IDENTIFIER ||
- node.role === semantic_meaning_js_1.SemanticRole.LATINLETTER ||
- node.role === semantic_meaning_js_1.SemanticRole.GREEKLETTER ||
- node.role === semantic_meaning_js_1.SemanticRole.OTHERLETTER);
- }
- function singlePunctAtPosition(nodes, puncts, position) {
- return (puncts.length === 1 &&
- (nodes[position].type === semantic_meaning_js_1.SemanticType.PUNCTUATION ||
- nodes[position].embellished === semantic_meaning_js_1.SemanticType.PUNCTUATION) &&
- nodes[position] === puncts[0]);
- }
- function isSimpleFunction(node) {
- return (isType(node, semantic_meaning_js_1.SemanticType.IDENTIFIER) &&
- isRole(node, semantic_meaning_js_1.SemanticRole.SIMPLEFUNC));
- }
- function isLeftBrace(node) {
- const leftBrace = ['{', '﹛', '{'];
- return !!node && leftBrace.indexOf(node.textContent) !== -1;
- }
- function isRightBrace(node) {
- const rightBrace = ['}', '﹜', '}'];
- return !!node && rightBrace.indexOf(node.textContent) !== -1;
- }
- function isSetNode(node) {
- return (isLeftBrace(node.contentNodes[0]) && isRightBrace(node.contentNodes[1]));
- }
- const illegalSingleton = [
- semantic_meaning_js_1.SemanticType.PUNCTUATION,
- semantic_meaning_js_1.SemanticType.PUNCTUATED,
- semantic_meaning_js_1.SemanticType.RELSEQ,
- semantic_meaning_js_1.SemanticType.MULTIREL,
- semantic_meaning_js_1.SemanticType.TABLE,
- semantic_meaning_js_1.SemanticType.MULTILINE,
- semantic_meaning_js_1.SemanticType.CASES,
- semantic_meaning_js_1.SemanticType.INFERENCE
- ];
- const scriptedElement = [
- semantic_meaning_js_1.SemanticType.LIMUPPER,
- semantic_meaning_js_1.SemanticType.LIMLOWER,
- semantic_meaning_js_1.SemanticType.LIMBOTH,
- semantic_meaning_js_1.SemanticType.SUBSCRIPT,
- semantic_meaning_js_1.SemanticType.SUPERSCRIPT,
- semantic_meaning_js_1.SemanticType.UNDERSCORE,
- semantic_meaning_js_1.SemanticType.OVERSCORE,
- semantic_meaning_js_1.SemanticType.TENSOR
- ];
- function isSingletonSetContent(node) {
- const type = node.type;
- if (illegalSingleton.indexOf(type) !== -1 ||
- (type === semantic_meaning_js_1.SemanticType.INFIXOP && node.role !== semantic_meaning_js_1.SemanticRole.IMPLICIT)) {
- return false;
- }
- if (type === semantic_meaning_js_1.SemanticType.FENCED) {
- return node.role === semantic_meaning_js_1.SemanticRole.LEFTRIGHT
- ? isSingletonSetContent(node.childNodes[0])
- : true;
- }
- if (scriptedElement.indexOf(type) !== -1) {
- return isSingletonSetContent(node.childNodes[0]);
- }
- return true;
- }
- function isNumber(node) {
- return (node.type === semantic_meaning_js_1.SemanticType.NUMBER &&
- (node.role === semantic_meaning_js_1.SemanticRole.INTEGER || node.role === semantic_meaning_js_1.SemanticRole.FLOAT));
- }
- function isUnitCounter(node) {
- return (isNumber(node) ||
- node.role === semantic_meaning_js_1.SemanticRole.VULGAR ||
- node.role === semantic_meaning_js_1.SemanticRole.MIXED);
- }
- function isPureUnit(node) {
- const children = node.childNodes;
- return (node.role === semantic_meaning_js_1.SemanticRole.UNIT &&
- (!children.length || children[0].role === semantic_meaning_js_1.SemanticRole.UNIT));
- }
- function isUnitProduct(node) {
- const children = node.childNodes;
- return (node.type === semantic_meaning_js_1.SemanticType.INFIXOP &&
- (node.role === semantic_meaning_js_1.SemanticRole.MULTIPLICATION ||
- node.role === semantic_meaning_js_1.SemanticRole.IMPLICIT) &&
- children.length &&
- (isPureUnit(children[0]) || isUnitCounter(children[0])) &&
- node.childNodes.slice(1).every(isPureUnit));
- }
- function isImplicit(node) {
- return (node.type === semantic_meaning_js_1.SemanticType.INFIXOP &&
- (node.role === semantic_meaning_js_1.SemanticRole.IMPLICIT ||
- (node.role === semantic_meaning_js_1.SemanticRole.UNIT &&
- !!node.contentNodes.length &&
- node.contentNodes[0].textContent === semantic_attr_js_1.NamedSymbol.invisibleTimes)));
- }
- function isImplicitOp(node) {
- return (node.type === semantic_meaning_js_1.SemanticType.INFIXOP && node.role === semantic_meaning_js_1.SemanticRole.IMPLICIT);
- }
- function isNeutralFence(fence) {
- return (fence.role === semantic_meaning_js_1.SemanticRole.NEUTRAL || fence.role === semantic_meaning_js_1.SemanticRole.METRIC);
- }
- function compareNeutralFences(fence1, fence2) {
- return (isNeutralFence(fence1) &&
- isNeutralFence(fence2) &&
- (0, semantic_util_js_1.getEmbellishedInner)(fence1).textContent ===
- (0, semantic_util_js_1.getEmbellishedInner)(fence2).textContent);
- }
- function elligibleLeftNeutral(fence) {
- if (!isNeutralFence(fence)) {
- return false;
- }
- if (!fence.embellished) {
- return true;
- }
- if (fence.type === semantic_meaning_js_1.SemanticType.SUPERSCRIPT ||
- fence.type === semantic_meaning_js_1.SemanticType.SUBSCRIPT) {
- return false;
- }
- if (fence.type === semantic_meaning_js_1.SemanticType.TENSOR &&
- (fence.childNodes[3].type !== semantic_meaning_js_1.SemanticType.EMPTY ||
- fence.childNodes[4].type !== semantic_meaning_js_1.SemanticType.EMPTY)) {
- return false;
- }
- return true;
- }
- function elligibleRightNeutral(fence) {
- if (!isNeutralFence(fence)) {
- return false;
- }
- if (!fence.embellished) {
- return true;
- }
- if (fence.type === semantic_meaning_js_1.SemanticType.TENSOR &&
- (fence.childNodes[1].type !== semantic_meaning_js_1.SemanticType.EMPTY ||
- fence.childNodes[2].type !== semantic_meaning_js_1.SemanticType.EMPTY)) {
- return false;
- }
- return true;
- }
- function isMembership(element) {
- return [
- semantic_meaning_js_1.SemanticRole.ELEMENT,
- semantic_meaning_js_1.SemanticRole.NONELEMENT,
- semantic_meaning_js_1.SemanticRole.REELEMENT,
- semantic_meaning_js_1.SemanticRole.RENONELEMENT
- ].includes(element.role);
- }
|