mathsteps-experimental-fork
Version:
Step by step math solutions. Experimental Fork
34 lines (30 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
function makeExtendedRegExp(inputPatternStr, flags) {
const cleanedPatternStr = inputPatternStr.replace(/(^|[^\\])#.*/g, "$1").replace(/(^|[^\\])\s+/g, "$1");
return new RegExp(cleanedPatternStr, flags);
}
const RGIntOrDecimal = makeExtendedRegExp(String.raw`
\d+ # Match one or more digits (integer part)
(?:\.\d+)? # Optionally match a decimal point followed by digits
`, "g");
const RGVariable = makeExtendedRegExp(String.raw`
[a-zA-Z] # Match one alphabetic characters
`, "g");
const RGOptionalVariable = makeExtendedRegExp(String.raw`
[a-zA-Z]? # Match one alphabetic characters or none
`, "g");
const RGNumbersAndOrVar = makeExtendedRegExp(String.raw`
(?:${RGIntOrDecimal.source}${RGOptionalVariable.source})
|
(?:${RGVariable.source})
`, "g");
const RGFraction = makeExtendedRegExp(String.raw`
(?:(${RGNumbersAndOrVar.source})\/)+(${RGNumbersAndOrVar.source})
`, "g");
exports.RGFraction = RGFraction;
exports.RGIntOrDecimal = RGIntOrDecimal;
exports.RGNumbersAndOrVar = RGNumbersAndOrVar;
exports.RGOptionalVariable = RGOptionalVariable;
exports.RGVariable = RGVariable;
exports.makeExtendedRegExp = makeExtendedRegExp;