@wordpress/blocks
Version:
Block API for WordPress.
8 lines (7 loc) • 2.57 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/api/raw-handling/latex-to-math.js"],
"sourcesContent": ["export default function isLatexMathMode( text ) {\n\tconst lettersRegex = /[\\p{L}\\s]+/gu;\n\tlet match;\n\n\twhile ( ( match = lettersRegex.exec( text ) ) ) {\n\t\t// If it's immediately preceded by a left brace, it could be an\n\t\t// argument, so ignore this piece of text.\n\t\tif ( text[ match.index - 1 ] === '{' ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet sequence = match[ 0 ];\n\n\t\t// If it's immediately preceded by a backslash, it could be a command,\n\t\t// so ignore any leading latin script letters.\n\t\tif ( text[ match.index - 1 ] === '\\\\' ) {\n\t\t\tsequence = sequence.replace( /^[a-zA-Z]+/, '' );\n\t\t}\n\n\t\t// If there's a sequence of 6 or more letters (with whitespace), it's a\n\t\t// strong indicator that it's not LaTeX math mode.\n\t\t// We can potentially increase this is there's false negatives.\n\t\tif ( sequence.length < 6 ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// If there's a command with argument syntax, we can be pretty sure it's\n\t// LaTeX math mode.\n\tif ( /\\\\[a-zA-Z]+\\s*\\{/g.test( text ) ) {\n\t\treturn true;\n\t}\n\n\t// Otherwise, check if there's at least two soft clues:\n\t// * An exponent (e.g., x^2)\n\t// * Common mathematical operators, but don't count each one separately\n\t// since they're also found in normal text.\n\t// * A command (e.g., \\alpha)\n\tconst softClues = [\n\t\t( t ) => t.includes( '^' ) && ! t.startsWith( '^' ),\n\t\t( t ) =>\n\t\t\t[ '=', '+', '-', '/', '*' ].some( ( operator ) =>\n\t\t\t\tt.includes( operator )\n\t\t\t),\n\t\t( t ) => /\\\\[a-zA-Z]+/g.test( t ),\n\t];\n\n\tif ( softClues.filter( ( clue ) => clue( text ) ).length >= 2 ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n"],
"mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAe,SAAR,gBAAkC,MAAO;AAC/C,QAAM,eAAe;AACrB,MAAI;AAEJ,SAAU,QAAQ,aAAa,KAAM,IAAK,GAAM;AAG/C,QAAK,KAAM,MAAM,QAAQ,CAAE,MAAM,KAAM;AACtC;AAAA,IACD;AAEA,QAAI,WAAW,MAAO,CAAE;AAIxB,QAAK,KAAM,MAAM,QAAQ,CAAE,MAAM,MAAO;AACvC,iBAAW,SAAS,QAAS,cAAc,EAAG;AAAA,IAC/C;AAKA,QAAK,SAAS,SAAS,GAAI;AAC1B;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAIA,MAAK,oBAAoB,KAAM,IAAK,GAAI;AACvC,WAAO;AAAA,EACR;AAOA,QAAM,YAAY;AAAA,IACjB,CAAE,MAAO,EAAE,SAAU,GAAI,KAAK,CAAE,EAAE,WAAY,GAAI;AAAA,IAClD,CAAE,MACD,CAAE,KAAK,KAAK,KAAK,KAAK,GAAI,EAAE;AAAA,MAAM,CAAE,aACnC,EAAE,SAAU,QAAS;AAAA,IACtB;AAAA,IACD,CAAE,MAAO,eAAe,KAAM,CAAE;AAAA,EACjC;AAEA,MAAK,UAAU,OAAQ,CAAE,SAAU,KAAM,IAAK,CAAE,EAAE,UAAU,GAAI;AAC/D,WAAO;AAAA,EACR;AAEA,SAAO;AACR;",
"names": []
}