quantible 0.1.0-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -0
- package/dist/cjs/config/default.js +395 -0
- package/dist/cjs/config/default.js.map +1 -0
- package/dist/cjs/converters/convertCurrencyToSpokenWord.js +28 -0
- package/dist/cjs/converters/convertCurrencyToSpokenWord.js.map +1 -0
- package/dist/cjs/converters/convertNumberToSpokenWord.js +32 -0
- package/dist/cjs/converters/convertNumberToSpokenWord.js.map +1 -0
- package/dist/cjs/converters/convertNumericUnitToSpokenWord.js +48 -0
- package/dist/cjs/converters/convertNumericUnitToSpokenWord.js.map +1 -0
- package/dist/cjs/converters/convertOperatorToSpokenWord.js +17 -0
- package/dist/cjs/converters/convertOperatorToSpokenWord.js.map +1 -0
- package/dist/cjs/converters/convertScientificExpressionToSpokenWord.js +35 -0
- package/dist/cjs/converters/convertScientificExpressionToSpokenWord.js.map +1 -0
- package/dist/cjs/converters/convertUnitOnlyToSpokenWord.js +27 -0
- package/dist/cjs/converters/convertUnitOnlyToSpokenWord.js.map +1 -0
- package/dist/cjs/index.js +116 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/configurations/default.js +3 -0
- package/dist/cjs/interfaces/configurations/default.js.map +1 -0
- package/dist/cjs/interfaces/definitions.js +3 -0
- package/dist/cjs/interfaces/definitions.js.map +1 -0
- package/dist/cjs/utils/extraction/patternExtractor.js +96 -0
- package/dist/cjs/utils/extraction/patternExtractor.js.map +1 -0
- package/dist/cjs/utils/extraction/regexPatterns.js +65 -0
- package/dist/cjs/utils/extraction/regexPatterns.js.map +1 -0
- package/dist/cjs/utils/parseSuperscript.js +33 -0
- package/dist/cjs/utils/parseSuperscript.js.map +1 -0
- package/dist/cjs/utils/stringBuilding/exponent.js +21 -0
- package/dist/cjs/utils/stringBuilding/exponent.js.map +1 -0
- package/dist/cjs/utils/stringBuilding/negative.js +8 -0
- package/dist/cjs/utils/stringBuilding/negative.js.map +1 -0
- package/dist/cjs/utils/stringBuilding/perDigit.js +18 -0
- package/dist/cjs/utils/stringBuilding/perDigit.js.map +1 -0
- package/dist/cjs/utils/stringBuilding/positiveInteger.js +31 -0
- package/dist/cjs/utils/stringBuilding/positiveInteger.js.map +1 -0
- package/dist/cjs/utils/stringBuilding/twoDigits.js +18 -0
- package/dist/cjs/utils/stringBuilding/twoDigits.js.map +1 -0
- package/dist/cjs/utils/stringBuilding/zeroTo999.js +37 -0
- package/dist/cjs/utils/stringBuilding/zeroTo999.js.map +1 -0
- package/dist/cjs/utils/validateExtractionResultObject.js +206 -0
- package/dist/cjs/utils/validateExtractionResultObject.js.map +1 -0
- package/dist/esm/config/default.js +392 -0
- package/dist/esm/config/default.js.map +1 -0
- package/dist/esm/converters/convertCurrencyToSpokenWord.js +25 -0
- package/dist/esm/converters/convertCurrencyToSpokenWord.js.map +1 -0
- package/dist/esm/converters/convertNumberToSpokenWord.js +29 -0
- package/dist/esm/converters/convertNumberToSpokenWord.js.map +1 -0
- package/dist/esm/converters/convertNumericUnitToSpokenWord.js +45 -0
- package/dist/esm/converters/convertNumericUnitToSpokenWord.js.map +1 -0
- package/dist/esm/converters/convertOperatorToSpokenWord.js +14 -0
- package/dist/esm/converters/convertOperatorToSpokenWord.js.map +1 -0
- package/dist/esm/converters/convertScientificExpressionToSpokenWord.js +32 -0
- package/dist/esm/converters/convertScientificExpressionToSpokenWord.js.map +1 -0
- package/dist/esm/converters/convertUnitOnlyToSpokenWord.js +24 -0
- package/dist/esm/converters/convertUnitOnlyToSpokenWord.js.map +1 -0
- package/dist/esm/index.js +111 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/configurations/default.js +2 -0
- package/dist/esm/interfaces/configurations/default.js.map +1 -0
- package/dist/esm/interfaces/definitions.js +2 -0
- package/dist/esm/interfaces/definitions.js.map +1 -0
- package/dist/esm/utils/extraction/patternExtractor.js +92 -0
- package/dist/esm/utils/extraction/patternExtractor.js.map +1 -0
- package/dist/esm/utils/extraction/regexPatterns.js +62 -0
- package/dist/esm/utils/extraction/regexPatterns.js.map +1 -0
- package/dist/esm/utils/parseSuperscript.js +30 -0
- package/dist/esm/utils/parseSuperscript.js.map +1 -0
- package/dist/esm/utils/stringBuilding/exponent.js +18 -0
- package/dist/esm/utils/stringBuilding/exponent.js.map +1 -0
- package/dist/esm/utils/stringBuilding/negative.js +4 -0
- package/dist/esm/utils/stringBuilding/negative.js.map +1 -0
- package/dist/esm/utils/stringBuilding/perDigit.js +15 -0
- package/dist/esm/utils/stringBuilding/perDigit.js.map +1 -0
- package/dist/esm/utils/stringBuilding/positiveInteger.js +28 -0
- package/dist/esm/utils/stringBuilding/positiveInteger.js.map +1 -0
- package/dist/esm/utils/stringBuilding/twoDigits.js +15 -0
- package/dist/esm/utils/stringBuilding/twoDigits.js.map +1 -0
- package/dist/esm/utils/stringBuilding/zeroTo999.js +34 -0
- package/dist/esm/utils/stringBuilding/zeroTo999.js.map +1 -0
- package/dist/esm/utils/validateExtractionResultObject.js +203 -0
- package/dist/esm/utils/validateExtractionResultObject.js.map +1 -0
- package/dist/types/config/default.d.ts +39 -0
- package/dist/types/converters/convertCurrencyToSpokenWord.d.ts +7 -0
- package/dist/types/converters/convertNumberToSpokenWord.d.ts +7 -0
- package/dist/types/converters/convertNumericUnitToSpokenWord.d.ts +7 -0
- package/dist/types/converters/convertOperatorToSpokenWord.d.ts +7 -0
- package/dist/types/converters/convertScientificExpressionToSpokenWord.d.ts +7 -0
- package/dist/types/converters/convertUnitOnlyToSpokenWord.d.ts +7 -0
- package/dist/types/index.d.ts +58 -0
- package/dist/types/interfaces/configurations/default.d.ts +22 -0
- package/dist/types/interfaces/definitions.d.ts +100 -0
- package/dist/types/utils/extraction/patternExtractor.d.ts +21 -0
- package/dist/types/utils/extraction/regexPatterns.d.ts +2 -0
- package/dist/types/utils/parseSuperscript.d.ts +6 -0
- package/dist/types/utils/stringBuilding/exponent.d.ts +2 -0
- package/dist/types/utils/stringBuilding/negative.d.ts +1 -0
- package/dist/types/utils/stringBuilding/perDigit.d.ts +7 -0
- package/dist/types/utils/stringBuilding/positiveInteger.d.ts +6 -0
- package/dist/types/utils/stringBuilding/twoDigits.d.ts +6 -0
- package/dist/types/utils/stringBuilding/zeroTo999.d.ts +6 -0
- package/dist/types/utils/validateExtractionResultObject.d.ts +12 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/config/default.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { currencies } from "../config/default";
|
|
2
|
+
import { positiveInteger } from "../utils/stringBuilding/positiveInteger";
|
|
3
|
+
import { twoDigit } from "../utils/stringBuilding/twoDigits";
|
|
4
|
+
import { negative } from "../utils/stringBuilding/negative";
|
|
5
|
+
/**
|
|
6
|
+
* Converts a currency object into its spoken word representation.
|
|
7
|
+
* @param {baseCurrency} amount - The currency object to convert.
|
|
8
|
+
* @returns {string} The spoken word representation of the currency.
|
|
9
|
+
*/
|
|
10
|
+
export function convertCurrencyToSpokenWord(amount) {
|
|
11
|
+
let sentence = "";
|
|
12
|
+
const { integer, decimal, negativeInt, currency } = amount;
|
|
13
|
+
let currencyConfig = currencies[currency];
|
|
14
|
+
let parsedInteger = parseInt(integer);
|
|
15
|
+
sentence += negative(negativeInt);
|
|
16
|
+
sentence += positiveInteger(parsedInteger) + " ";
|
|
17
|
+
sentence += parsedInteger < 2 ? currencyConfig.singular : currencyConfig.plural + " ";
|
|
18
|
+
if (decimal !== undefined && currencyConfig.fraction !== null && currencyConfig.fraction !== undefined) {
|
|
19
|
+
sentence += "and ";
|
|
20
|
+
sentence += twoDigit(decimal) + " ";
|
|
21
|
+
sentence += parseInt(decimal) < 2 ? currencyConfig.fraction.singular : currencyConfig.fraction.plural;
|
|
22
|
+
}
|
|
23
|
+
return sentence.trim();
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=convertCurrencyToSpokenWord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertCurrencyToSpokenWord.js","sourceRoot":"","sources":["../../../src/converters/convertCurrencyToSpokenWord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAG5D;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAoB;IAC9D,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE3D,IAAI,cAAc,GAAa,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEpD,IAAI,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEtC,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClC,QAAQ,IAAI,eAAe,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;IACjD,QAAQ,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,GAAG,CAAC;IACtF,IAAI,OAAO,KAAK,SAAS,IAAI,cAAc,CAAC,QAAQ,KAAK,IAAI,IAAI,cAAc,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACvG,QAAQ,IAAI,MAAM,CAAC;QACnB,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;QACpC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxG,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { positiveInteger } from "../utils/stringBuilding/positiveInteger";
|
|
2
|
+
import { twoDigit } from "../utils/stringBuilding/twoDigits";
|
|
3
|
+
import { perDigit } from "../utils/stringBuilding/perDigit";
|
|
4
|
+
import { negative } from "../utils/stringBuilding/negative";
|
|
5
|
+
import { exponentSpokenWord } from "../utils/stringBuilding/exponent";
|
|
6
|
+
/**
|
|
7
|
+
* Converts a number object into its spoken word representation.
|
|
8
|
+
* @param {baseNumber} num - The number object to convert.
|
|
9
|
+
* @returns {string} The spoken word representation of the number.
|
|
10
|
+
*/
|
|
11
|
+
export function convertNumberToSpokenWord(num) {
|
|
12
|
+
const { integer, decimal, negativeInt, exponent } = num;
|
|
13
|
+
let sentence = negative(negativeInt);
|
|
14
|
+
sentence += positiveInteger(parseInt(integer)) + " ";
|
|
15
|
+
if (decimal !== undefined) {
|
|
16
|
+
sentence += "point ";
|
|
17
|
+
if (decimal.length === 1 || decimal.length > 2) {
|
|
18
|
+
sentence += perDigit(decimal) + " ";
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
sentence += twoDigit(decimal) + " ";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (exponent !== undefined) {
|
|
25
|
+
sentence += exponentSpokenWord(exponent, true);
|
|
26
|
+
}
|
|
27
|
+
return sentence.trim();
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=convertNumberToSpokenWord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertNumberToSpokenWord.js","sourceRoot":"","sources":["../../../src/converters/convertNumberToSpokenWord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAe;IACvD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAExD,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAErC,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC;IAErD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,QAAQ,IAAI,QAAQ,CAAC;QACrB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;QACtC,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,QAAQ,IAAI,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { units } from "../config/default";
|
|
2
|
+
import { exponentSpokenWord } from "../utils/stringBuilding/exponent";
|
|
3
|
+
import { convertNumberToSpokenWord } from "./convertNumberToSpokenWord";
|
|
4
|
+
/**
|
|
5
|
+
* Converts a numeric unit object into its spoken word representation.
|
|
6
|
+
* @param {baseNumberUnit} numericUnit - The numeric unit object to convert.
|
|
7
|
+
* @returns {string} The spoken word representation of the numeric unit.
|
|
8
|
+
*/
|
|
9
|
+
export function convertNumericUnitToSpokenWord(numericUnit) {
|
|
10
|
+
const { integer, decimal, unit, negativeInt, exponent, unitExponent } = numericUnit;
|
|
11
|
+
let sentence = convertNumberToSpokenWord({
|
|
12
|
+
integer,
|
|
13
|
+
decimal,
|
|
14
|
+
negativeInt,
|
|
15
|
+
matchType: "number",
|
|
16
|
+
input: "",
|
|
17
|
+
index: 0,
|
|
18
|
+
});
|
|
19
|
+
let spokenUnit;
|
|
20
|
+
let directUnitKey = unit + (unitExponent !== undefined ? unitExponent : "");
|
|
21
|
+
let directUnit = units[directUnitKey];
|
|
22
|
+
if (directUnit !== undefined) {
|
|
23
|
+
spokenUnit = directUnit;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
spokenUnit = units[unit];
|
|
27
|
+
}
|
|
28
|
+
if (spokenUnit === undefined) {
|
|
29
|
+
return "";
|
|
30
|
+
}
|
|
31
|
+
let isPlural = parseFloat(integer + "." + decimal) > 1 && spokenUnit.plural;
|
|
32
|
+
let spokenNumberExponent = "";
|
|
33
|
+
let spokenUnitExponent = "";
|
|
34
|
+
if (exponent !== undefined) {
|
|
35
|
+
spokenNumberExponent = exponentSpokenWord(exponent, true);
|
|
36
|
+
}
|
|
37
|
+
if (unitExponent !== undefined && directUnit === undefined) {
|
|
38
|
+
spokenUnitExponent = exponentSpokenWord(unitExponent);
|
|
39
|
+
}
|
|
40
|
+
sentence +=
|
|
41
|
+
" " + spokenNumberExponent + " " + (isPlural ? spokenUnit.plural : spokenUnit.singular) + " " + spokenUnitExponent;
|
|
42
|
+
sentence = sentence.trim().replace(/\s+/g, " ");
|
|
43
|
+
return sentence;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=convertNumericUnitToSpokenWord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertNumericUnitToSpokenWord.js","sourceRoot":"","sources":["../../../src/converters/convertNumericUnitToSpokenWord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,WAA2B;IACxE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC;IAEpF,IAAI,QAAQ,GAAG,yBAAyB,CAAC;QACvC,OAAO;QACP,OAAO;QACP,WAAW;QACX,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,CAAC;KACT,CAAC,CAAC;IAEH,IAAI,UAAgB,CAAC;IAErB,IAAI,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5E,IAAI,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IAEtC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,UAAU,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC;IAE5E,IAAI,oBAAoB,GAAW,EAAE,CAAC;IACtC,IAAI,kBAAkB,GAAW,EAAE,CAAC;IAEpC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,oBAAoB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3D,kBAAkB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ;QACN,GAAG,GAAG,oBAAoB,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC;IAErH,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEhD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { math } from "../config/default";
|
|
2
|
+
/**
|
|
3
|
+
* Converts an operator object into its spoken word representation.
|
|
4
|
+
* @param {baseOperator} operatorObject - The operator object to convert.
|
|
5
|
+
* @returns {string} The spoken word representation of the operator.
|
|
6
|
+
*/
|
|
7
|
+
export function convertOperatorToSpokenWord(operatorObject) {
|
|
8
|
+
const { input } = operatorObject;
|
|
9
|
+
if (input === undefined) {
|
|
10
|
+
return "";
|
|
11
|
+
}
|
|
12
|
+
return math[input];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=convertOperatorToSpokenWord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertOperatorToSpokenWord.js","sourceRoot":"","sources":["../../../src/converters/convertOperatorToSpokenWord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,cAA4B;IACtE,MAAM,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC;IACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,KAA0B,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { convertNumberToSpokenWord } from "./convertNumberToSpokenWord";
|
|
2
|
+
import { toRegularInteger } from "../utils/parseSuperscript";
|
|
3
|
+
/**
|
|
4
|
+
* Converts a scientific expression object into its spoken word representation.
|
|
5
|
+
* @param {baseScientific} expression - The scientific expression object to convert.
|
|
6
|
+
* @returns {string} The spoken word representation of the scientific expression.
|
|
7
|
+
*/
|
|
8
|
+
export function convertScientificExpressionToSpokenWord(expression) {
|
|
9
|
+
const { integer, decimal, exponent, negativeInt } = expression;
|
|
10
|
+
const isNegativeExponent = exponent.startsWith("-") || exponent.startsWith("⁻");
|
|
11
|
+
let E = "times ten to the power of ";
|
|
12
|
+
let sentence = convertNumberToSpokenWord({
|
|
13
|
+
integer,
|
|
14
|
+
decimal,
|
|
15
|
+
negativeInt,
|
|
16
|
+
matchType: "number",
|
|
17
|
+
input: "",
|
|
18
|
+
index: 0,
|
|
19
|
+
}) +
|
|
20
|
+
" " +
|
|
21
|
+
E +
|
|
22
|
+
convertNumberToSpokenWord({
|
|
23
|
+
decimal: undefined,
|
|
24
|
+
negativeInt: isNegativeExponent,
|
|
25
|
+
integer: toRegularInteger(isNegativeExponent ? exponent.slice(1) : exponent),
|
|
26
|
+
matchType: "number",
|
|
27
|
+
input: "",
|
|
28
|
+
index: 0,
|
|
29
|
+
});
|
|
30
|
+
return sentence.trim();
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=convertScientificExpressionToSpokenWord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertScientificExpressionToSpokenWord.js","sourceRoot":"","sources":["../../../src/converters/convertScientificExpressionToSpokenWord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CAAC,UAA0B;IAChF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IAE/D,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEhF,IAAI,CAAC,GAAG,4BAA4B,CAAC;IAErC,IAAI,QAAQ,GACV,yBAAyB,CAAC;QACxB,OAAO;QACP,OAAO;QACP,WAAW;QACX,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,CAAC;KAET,CAAC;QACF,GAAG;QACH,CAAC;QACD,yBAAyB,CAAC;YACxB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,kBAAkB;YAC/B,OAAO,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5E,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,CAAC;SAET,CAAC,CAAC;IAEL,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { units } from "../config/default";
|
|
2
|
+
import { exponentSpokenWord } from "../utils/stringBuilding/exponent";
|
|
3
|
+
/**
|
|
4
|
+
* Converts a unit-only object into its spoken word representation.
|
|
5
|
+
* @param {baseUnitOnly} unitOnlyObject - The unit-only object to convert.
|
|
6
|
+
* @returns {string} The spoken word representation of the unit.
|
|
7
|
+
*/
|
|
8
|
+
export function convertUnitOnlyToSpokenWord(unitOnlyObject) {
|
|
9
|
+
const { unit, unitExponent } = unitOnlyObject;
|
|
10
|
+
let spokenUnit;
|
|
11
|
+
spokenUnit = units[unit];
|
|
12
|
+
let result = "";
|
|
13
|
+
if (spokenUnit === undefined) {
|
|
14
|
+
return "";
|
|
15
|
+
}
|
|
16
|
+
if (unitExponent !== undefined) {
|
|
17
|
+
result = spokenUnit.singular + " " + exponentSpokenWord(unitExponent);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
result = spokenUnit.singular;
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=convertUnitOnlyToSpokenWord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertUnitOnlyToSpokenWord.js","sourceRoot":"","sources":["../../../src/converters/convertUnitOnlyToSpokenWord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGtE;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,cAA4B;IACtE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC;IAE9C,IAAI,UAAgB,CAAC;IAErB,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAEzB,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,GAAG,UAAU,CAAC,QAAQ,GAAG,GAAG,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { extractFirstMatch, extractAllMatches } from "./utils/extraction/patternExtractor";
|
|
2
|
+
import { convertCurrencyToSpokenWord } from "./converters/convertCurrencyToSpokenWord";
|
|
3
|
+
import { convertNumberToSpokenWord } from "./converters/convertNumberToSpokenWord";
|
|
4
|
+
import { convertNumericUnitToSpokenWord } from "./converters/convertNumericUnitToSpokenWord";
|
|
5
|
+
import { convertOperatorToSpokenWord } from "./converters/convertOperatorToSpokenWord";
|
|
6
|
+
import { convertScientificExpressionToSpokenWord } from "./converters/convertScientificExpressionToSpokenWord";
|
|
7
|
+
import { convertUnitOnlyToSpokenWord } from "./converters/convertUnitOnlyToSpokenWord";
|
|
8
|
+
import { validateExtractionResult } from "./utils/validateExtractionResultObject";
|
|
9
|
+
/**
|
|
10
|
+
* @namespace extractQuantities
|
|
11
|
+
* @description Contains functions for extracting numeric data from a string.
|
|
12
|
+
*/
|
|
13
|
+
const extractQuantities = {
|
|
14
|
+
/**
|
|
15
|
+
* Extracts the first match (number || currency || unit || operator || scientific expression) from the input string.
|
|
16
|
+
* @param {string} input - The string to extract from.
|
|
17
|
+
* @returns {ExtractionResult | null} The extracted data or null if no match is found.
|
|
18
|
+
*/
|
|
19
|
+
firstMatch: extractFirstMatch,
|
|
20
|
+
/**
|
|
21
|
+
* Extracts all matches (number || currency || unit || operator || scientific expression) from the input string.
|
|
22
|
+
* @param {string} input - The string to extract from.
|
|
23
|
+
* @returns {ExtractionResult[]} The extracted data.
|
|
24
|
+
*/
|
|
25
|
+
allMatches: extractAllMatches,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @namespace convertQuantities
|
|
29
|
+
* @description Contains functions for converting (number || currency || unit || operator || scientific expression) data from a string or object to spoken word.
|
|
30
|
+
*/
|
|
31
|
+
const convertQuantities = {
|
|
32
|
+
/**
|
|
33
|
+
* Translates an ExtractionResult object (number || currency || unit || operator || scientific expression) into its spoken word equivalent.
|
|
34
|
+
*
|
|
35
|
+
* @param {ExtractionResult} extractionResult - The ExtractionResult object to translate.
|
|
36
|
+
* @returns {string} The spoken word equivalent of the ExtractionResult.
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* Translates an ExtractionResult object (number || currency || unit || operator || scientific expression) into its spoken word equivalent.
|
|
40
|
+
*
|
|
41
|
+
* @param {ExtractionResult} extractionResult - The ExtractionResult object to translate.
|
|
42
|
+
* @returns {string} The spoken word equivalent of the ExtractionResult.
|
|
43
|
+
*/
|
|
44
|
+
translateMatch: (extractionResult) => {
|
|
45
|
+
let result = "";
|
|
46
|
+
switch (extractionResult.matchType) {
|
|
47
|
+
case "number":
|
|
48
|
+
result = convertNumberToSpokenWord(extractionResult);
|
|
49
|
+
break;
|
|
50
|
+
case "symbolCurrency":
|
|
51
|
+
result = convertCurrencyToSpokenWord(extractionResult);
|
|
52
|
+
break;
|
|
53
|
+
case "codeCurrency":
|
|
54
|
+
result = convertCurrencyToSpokenWord(extractionResult);
|
|
55
|
+
break;
|
|
56
|
+
case "unit":
|
|
57
|
+
result = convertNumericUnitToSpokenWord(extractionResult);
|
|
58
|
+
break;
|
|
59
|
+
case "unitOnly":
|
|
60
|
+
result = convertUnitOnlyToSpokenWord(extractionResult);
|
|
61
|
+
break;
|
|
62
|
+
case "operator":
|
|
63
|
+
result = convertOperatorToSpokenWord(extractionResult);
|
|
64
|
+
break;
|
|
65
|
+
case "scientific":
|
|
66
|
+
result = convertScientificExpressionToSpokenWord(extractionResult);
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
},
|
|
73
|
+
/**
|
|
74
|
+
* Extracts the first match (number || currency || unit || operator || scientific expression) from the input string
|
|
75
|
+
* and translates it to its spoken word equivalent.
|
|
76
|
+
*
|
|
77
|
+
* @param {string} input - The string to extract and translate from.
|
|
78
|
+
* @returns {string} The input string with the first match replaced by its spoken word equivalent,
|
|
79
|
+
* or an empty string if no match is found.
|
|
80
|
+
*/
|
|
81
|
+
autoReplaceFirstMatch: (input) => {
|
|
82
|
+
const match = extractFirstMatch(input);
|
|
83
|
+
if (!match)
|
|
84
|
+
return "";
|
|
85
|
+
return input.replace(match.input, convertQuantities.translateMatch(match));
|
|
86
|
+
},
|
|
87
|
+
/**
|
|
88
|
+
* Extracts all matches (number || currency || unit || operator || scientific expression) from the input string
|
|
89
|
+
* and translates them to their spoken word equivalents.
|
|
90
|
+
*
|
|
91
|
+
* @param {string} input - The string to extract and translate from.
|
|
92
|
+
* @returns {string} The input string with all matches replaced by their spoken word equivalents. Returns the original string if no matches are found.
|
|
93
|
+
*/
|
|
94
|
+
autoReplaceAllMatches: (input) => {
|
|
95
|
+
const matches = extractAllMatches(input);
|
|
96
|
+
if (matches.length === 0) {
|
|
97
|
+
return input;
|
|
98
|
+
}
|
|
99
|
+
let output = "";
|
|
100
|
+
let lastIndex = 0;
|
|
101
|
+
for (const match of matches) {
|
|
102
|
+
output += input.substring(lastIndex, match.index);
|
|
103
|
+
output += convertQuantities.translateMatch(match);
|
|
104
|
+
lastIndex = match.index + match.input.length;
|
|
105
|
+
}
|
|
106
|
+
output += input.substring(lastIndex);
|
|
107
|
+
return output.replace(/\s+/g, " ").trim();
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
export { convertQuantities, extractQuantities, validateExtractionResult };
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../src/interfaces/configurations/default.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/interfaces/definitions.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { regexMatches } from "./regexPatterns";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the first match of a number, currency, unit, or exponent in the given string.
|
|
4
|
+
* The returned object contains the extracted groups and additional information such as
|
|
5
|
+
* the type of match and the index of the match in the string.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} input - The string to search for matches
|
|
8
|
+
* @returns {patternExtraction | null} - The extracted groups and additional information, or null if no match is found
|
|
9
|
+
*/
|
|
10
|
+
export function extractFirstMatch(input) {
|
|
11
|
+
const match = input.match(regexMatches);
|
|
12
|
+
if (match && match.groups && match.index !== undefined) {
|
|
13
|
+
const matchedGroup = Object.fromEntries(Object.entries(match.groups).filter(([_, value]) => value !== undefined));
|
|
14
|
+
let matchType = Object.keys(matchedGroup)[0];
|
|
15
|
+
const extractedGroup = {};
|
|
16
|
+
switch (matchType) {
|
|
17
|
+
case "symbolCurrency":
|
|
18
|
+
extractedGroup.integer = matchedGroup["symbolInt"];
|
|
19
|
+
extractedGroup.decimal = matchedGroup["symbolDec"];
|
|
20
|
+
extractedGroup.negativeInt = matchedGroup["negativeSignSymbol"] !== undefined;
|
|
21
|
+
extractedGroup.currency = matchedGroup["currencySymbol"];
|
|
22
|
+
break;
|
|
23
|
+
case "codeCurrency":
|
|
24
|
+
extractedGroup.integer = matchedGroup["codeInt"];
|
|
25
|
+
extractedGroup.decimal = matchedGroup["codeDec"];
|
|
26
|
+
extractedGroup.negativeInt = matchedGroup["negativeSignCode"] !== undefined;
|
|
27
|
+
extractedGroup.currency = matchedGroup["currencyCode"];
|
|
28
|
+
break;
|
|
29
|
+
case "scientific":
|
|
30
|
+
extractedGroup.integer = matchedGroup["scientificInt"];
|
|
31
|
+
extractedGroup.decimal = matchedGroup["scientificDec"];
|
|
32
|
+
extractedGroup.negativeInt = matchedGroup["negativeSignScientific"] !== undefined;
|
|
33
|
+
extractedGroup.exponent = matchedGroup["scientificExponent"];
|
|
34
|
+
break;
|
|
35
|
+
case "unit":
|
|
36
|
+
extractedGroup.integer = matchedGroup["unitInt"];
|
|
37
|
+
extractedGroup.decimal = matchedGroup["unitDec"];
|
|
38
|
+
extractedGroup.negativeInt = matchedGroup["negativeSignUnit"] !== undefined;
|
|
39
|
+
extractedGroup.unit = matchedGroup["unitName"];
|
|
40
|
+
extractedGroup.exponent = matchedGroup["unitCaretExponentPre"] || matchedGroup["unitSuperExponentPre"];
|
|
41
|
+
extractedGroup.unitExponent = matchedGroup["unitCaretExponentPost"] || matchedGroup["unitSuperExponentPost"];
|
|
42
|
+
break;
|
|
43
|
+
case "unitOnly":
|
|
44
|
+
extractedGroup.unit = matchedGroup["unitNameOnly"];
|
|
45
|
+
extractedGroup.unitExponent = matchedGroup["unitOnlyCaretExponent"] || matchedGroup["unitOnlySuperExponent"];
|
|
46
|
+
break;
|
|
47
|
+
case "operator":
|
|
48
|
+
break;
|
|
49
|
+
case "number":
|
|
50
|
+
extractedGroup.integer = matchedGroup["integerInt"];
|
|
51
|
+
extractedGroup.decimal = matchedGroup["integerDec"];
|
|
52
|
+
extractedGroup.exponent = matchedGroup["integerSuperExponent"] || matchedGroup["integerCaretExponent"];
|
|
53
|
+
extractedGroup.negativeInt = matchedGroup["negativeSignInteger"] !== undefined;
|
|
54
|
+
break;
|
|
55
|
+
default:
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
extractedGroup.matchType = matchType;
|
|
59
|
+
extractedGroup.input = matchedGroup[matchType];
|
|
60
|
+
extractedGroup.index = match.index;
|
|
61
|
+
if (matchType !== "operator" && matchType !== "scientific" && matchType !== "unitOnly")
|
|
62
|
+
extractedGroup.integer = extractedGroup.integer !== undefined ? extractedGroup.integer.replace(/,/g, "") : "0";
|
|
63
|
+
return extractedGroup;
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Extracts all matches of a number, currency, unit, or exponent in the given string
|
|
69
|
+
* and returns an array of the extracted groups and additional information such as
|
|
70
|
+
* the type of match and the index of the match in the string.
|
|
71
|
+
*
|
|
72
|
+
* If the input string contains no matches, an empty array is returned.
|
|
73
|
+
*
|
|
74
|
+
* @param {string} input - The string to search for matches
|
|
75
|
+
* @returns {patternExtraction[]} - The extracted groups and additional information, or an empty array if no match is found
|
|
76
|
+
*/
|
|
77
|
+
export function extractAllMatches(input) {
|
|
78
|
+
const results = [];
|
|
79
|
+
let remainingInput = input;
|
|
80
|
+
let currentExtraction = extractFirstMatch(remainingInput);
|
|
81
|
+
while (currentExtraction !== null && currentExtraction.input) {
|
|
82
|
+
const remainingLength = input.length - remainingInput.length;
|
|
83
|
+
if (results.length > 0) {
|
|
84
|
+
currentExtraction.index = remainingInput.indexOf(currentExtraction.input) + remainingLength;
|
|
85
|
+
}
|
|
86
|
+
results.push(currentExtraction);
|
|
87
|
+
remainingInput = remainingInput.substring(remainingInput.indexOf(currentExtraction.input) + currentExtraction.input.length);
|
|
88
|
+
currentExtraction = extractFirstMatch(remainingInput);
|
|
89
|
+
}
|
|
90
|
+
return results;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=patternExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patternExtractor.js","sourceRoot":"","sources":["../../../../src/utils/extraction/patternExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { units, math, currencyCodes, currencySymbols, } from "../../config/default";
|
|
2
|
+
const sanitizeString = (str) => {
|
|
3
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
4
|
+
};
|
|
5
|
+
// Dynamic pattern generation from config
|
|
6
|
+
const currencySymbolsSanitized = Object.keys(currencySymbols)
|
|
7
|
+
.map((key) => sanitizeString(key)) // Escape special regex characters
|
|
8
|
+
.join("|");
|
|
9
|
+
const currencyCodesSanitized = Object.keys(currencyCodes).join("|");
|
|
10
|
+
const allUnits = Object.keys(units)
|
|
11
|
+
.map((key) => sanitizeString(key))
|
|
12
|
+
.sort((a, b) => b.length - a.length)
|
|
13
|
+
.join("|");
|
|
14
|
+
const operatorSymbols = Object.keys(math)
|
|
15
|
+
.map((operator) => sanitizeString(operator))
|
|
16
|
+
.join("|");
|
|
17
|
+
const regexMatches = new RegExp([
|
|
18
|
+
// Currency Matching (Highest Priority)
|
|
19
|
+
`(?<=^|\\s)(?:` + // Ensures the match is at the beginning of the string or preceded by whitespace
|
|
20
|
+
`(?<symbolCurrency>(?<negativeSignSymbol>-)?(?<currencySymbol>${currencySymbolsSanitized})\\s*(?<symbolInt>(?:\\d{1,3}(?:,\\d{3})*|\\d+))(?:\\.(?<symbolDec>\\d+))?)` + // Matches currency with symbols
|
|
21
|
+
`|` + // OR
|
|
22
|
+
`(?<codeCurrency>(?<negativeSignCode>-)?(?<codeInt>(?:\\d{1,3}(?:,\\d{3})*|\\d+))(?:\\.(?<codeDec>\\d+))?[ \\t]*(?<currencyCode>${currencyCodesSanitized}))` + // Matches currency with codes
|
|
23
|
+
`)` + // End of currency matching group
|
|
24
|
+
`(?=(?:\\s|$|(?:\\.(?!\\d))|[^\\d.]))`, // Ensures the match is followed by whitespace, end of string, or non-numeric characters
|
|
25
|
+
// Scientific Notation 5e-10, 5e10, 5.5e10, 5.5e-10
|
|
26
|
+
`|(?<scientific>` + // Group for scientific notation
|
|
27
|
+
`(?<negativeSignScientific>-)?(?<scientificInt>\\d+)(?:\\.(?<scientificDec>\\d+))?(?:[eE])(?<scientificExponent>[+-]?\\d+)` + // Matches scientific notation format
|
|
28
|
+
`)(?=(?:\\s|$|(?:\\.(?!\\d))|[^\\d.]))`, // Ensures the match is followed by whitespace, end of string, or non-numeric characters
|
|
29
|
+
// Numeric Units 5km, 10m/s, 10m/s^2, 10m/s², 10m²/s, 10m²/s²
|
|
30
|
+
`|(?<unit>` + // Group for units
|
|
31
|
+
`(?<negativeSignUnit>-)?(?<unitInt>(?:\\d{1,3}(?:,\\d{3})*|\\d+))(?:\\.(?<unitDec>\\d+))?` + // Matches the number part of the unit
|
|
32
|
+
`\\s*` + // Matches optional whitespace
|
|
33
|
+
`(?:` + // Group for handling exponents (caret or superscript)
|
|
34
|
+
`\\^(?<unitCaretExponentPre>-?\\d+)|` + // Matches caret exponent
|
|
35
|
+
`(?<unitSuperExponentPre>⁻?[¹²³⁴⁵⁶⁷⁸⁹])` + // Matches superscript exponent
|
|
36
|
+
`)?` + // End of exponent group
|
|
37
|
+
`\\s*(?<unitName>(?:${allUnits}))` + // Matches the unit name
|
|
38
|
+
`(?:` + // Group for handling exponents (caret or superscript)
|
|
39
|
+
`\\^(?<unitCaretExponentPost>-?\\d+)|` + // Matches caret exponent
|
|
40
|
+
`(?<unitSuperExponentPost>⁻?[¹²³⁴⁵⁶⁷⁸⁹])` + // Matches superscript exponent
|
|
41
|
+
`)?` + // End of exponent group
|
|
42
|
+
`)(?=(?:\\s|$|(?:\\.(?!\\d))|[^\\d.]))`, // Ensures the match is followed by whitespace, end of string, or non-numeric characters
|
|
43
|
+
// Number with optional exponent
|
|
44
|
+
`|(?<!\\w)(?<number>` + // Group for number
|
|
45
|
+
`(?<negativeSignInteger>-)?` + // Matches an optional negative sign
|
|
46
|
+
`(?<integerInt>(?:\\d{1,3}(?:,\\d{3})*|\\d+))` + // Matches the integer part of the number
|
|
47
|
+
`(?:\\.(?<integerDec>\\d+))?` + // Matches the decimal part of the number
|
|
48
|
+
`(?:(?:\\^(?<integerCaretExponent>-?\\d+))|` + // Matches exponent with caret
|
|
49
|
+
`(?<integerSuperExponent>⁻?[¹²³⁴⁵⁶⁷⁸⁹]))?` + // Matches exponent with superscript
|
|
50
|
+
`)(?=(?:\\s|$|(?:\\.(?!\\d))|[^\\d.]))`, // Ensures the match is followed by whitespace, end of string, or non-numeric characters
|
|
51
|
+
// Unit Only (e.g., m, kg, m², kg³)
|
|
52
|
+
`|(?<unitOnly>` + // Group for unit only
|
|
53
|
+
`(?<![\\w.])` + // Negative lookbehind to prevent matching units within words
|
|
54
|
+
`(?<unitNameOnly>(?:${allUnits})\\b)` + // Matches the unit name
|
|
55
|
+
`(?:\\^(?<unitOnlyCaretExponent>-?\\d+)|(?<unitOnlySuperExponent>⁻?[¹²³⁴⁵⁶⁷⁸⁹]))?` + // Matches optional exponent
|
|
56
|
+
`(?!\\w)` + // Negative lookahead to prevent matching units within words
|
|
57
|
+
`)(?=(?:\\s|$|(?:\\.(?!\\d))|[^\\d.]))`, // Ensures the match is followed by whitespace, end of string, or non-numeric characters
|
|
58
|
+
// Mathematical Operators
|
|
59
|
+
`|(?<operator>(?:(?<=^)|(?<=\\s))(${operatorSymbols})(?=\\s|$|(?:\\.(?!\\d))))`, // Matches mathematical operators
|
|
60
|
+
].join(""), "u");
|
|
61
|
+
export { regexMatches };
|
|
62
|
+
//# sourceMappingURL=regexPatterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regexPatterns.js","sourceRoot":"","sources":["../../../../src/utils/extraction/regexPatterns.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,IAAI,EACJ,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,cAAc,GAAG,CAAC,GAAW,EAAU,EAAE;IAC7C,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,yCAAyC;AACzC,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;KAC1D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC;KACpE,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,MAAM,sBAAsB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEpE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;KAChC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;KACnC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEb,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;KACtC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;KAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;AAEb,MAAM,YAAY,GAAG,IAAI,MAAM,CAC7B;IACE,uCAAuC;IACvC,eAAe,GAAG,gFAAgF;QAChG,gEAAgE,wBAAwB,6EAA6E,GAAG,gCAAgC;QACxM,GAAG,GAAG,KAAK;QACX,kIAAkI,sBAAsB,IAAI,GAAG,8BAA8B;QAC7L,GAAG,GAAG,iCAAiC;QACvC,sCAAsC,EAAE,wFAAwF;IAElI,mDAAmD;IACnD,iBAAiB,GAAG,gCAAgC;QAClD,2HAA2H,GAAG,qCAAqC;QACnK,uCAAuC,EAAE,wFAAwF;IAEnI,6DAA6D;IAC7D,WAAW,GAAG,kBAAkB;QAC9B,0FAA0F,GAAG,sCAAsC;QACnI,MAAM,GAAG,8BAA8B;QACvC,KAAK,GAAG,sDAAsD;QAC9D,qCAAqC,GAAG,yBAAyB;QACjE,wCAAwC,GAAG,+BAA+B;QAC1E,IAAI,GAAG,wBAAwB;QAC/B,sBAAsB,QAAQ,IAAI,GAAG,wBAAwB;QAC7D,KAAK,GAAG,sDAAsD;QAC9D,sCAAsC,GAAG,yBAAyB;QAClE,yCAAyC,GAAG,+BAA+B;QAC3E,IAAI,GAAG,wBAAwB;QAC/B,uCAAuC,EAAE,wFAAwF;IAEnI,gCAAgC;IAChC,qBAAqB,GAAG,mBAAmB;QACzC,4BAA4B,GAAG,oCAAoC;QACnE,8CAA8C,GAAG,yCAAyC;QAC1F,6BAA6B,GAAG,yCAAyC;QACzE,4CAA4C,GAAG,8BAA8B;QAC7E,0CAA0C,GAAG,oCAAoC;QACjF,uCAAuC,EAAE,wFAAwF;IAEnI,mCAAmC;IACnC,eAAe,GAAG,sBAAsB;QACtC,aAAa,GAAG,6DAA6D;QAC7E,sBAAsB,QAAQ,OAAO,GAAG,wBAAwB;QAChE,kFAAkF,GAAG,4BAA4B;QACjH,SAAS,GAAG,4DAA4D;QACxE,uCAAuC,EAAE,wFAAwF;IACnI,yBAAyB;IACzB,oCAAoC,eAAe,4BAA4B,EAAE,iCAAiC;CACnH,CAAC,IAAI,CAAC,EAAE,CAAC,EACV,GAAG,CACJ,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a string of superscript digits to regular integer string.
|
|
3
|
+
* @param {string} superscriptString - String containing superscript digits.
|
|
4
|
+
* @returns {string} - String of regular digits.
|
|
5
|
+
*/
|
|
6
|
+
export function toRegularInteger(superscriptString) {
|
|
7
|
+
const superscriptMap = {
|
|
8
|
+
"⁰": "0",
|
|
9
|
+
"¹": "1",
|
|
10
|
+
"²": "2",
|
|
11
|
+
"³": "3",
|
|
12
|
+
"⁴": "4",
|
|
13
|
+
"⁵": "5",
|
|
14
|
+
"⁶": "6",
|
|
15
|
+
"⁷": "7",
|
|
16
|
+
"⁸": "8",
|
|
17
|
+
"⁹": "9",
|
|
18
|
+
};
|
|
19
|
+
let standardDigitString = "";
|
|
20
|
+
for (let char of superscriptString) {
|
|
21
|
+
if (superscriptMap[char]) {
|
|
22
|
+
standardDigitString += superscriptMap[char];
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
standardDigitString += char;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return standardDigitString;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=parseSuperscript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseSuperscript.js","sourceRoot":"","sources":["../../../src/utils/parseSuperscript.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,iBAAyB;IACxD,MAAM,cAAc,GAA8B;QAChD,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;KACT,CAAC;IAEF,IAAI,mBAAmB,GAAG,EAAE,CAAC;IAC7B,KAAK,IAAI,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACnC,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,mBAAmB,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,mBAAmB,IAAI,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { toRegularInteger } from "../parseSuperscript";
|
|
2
|
+
import { positiveInteger } from "./positiveInteger";
|
|
3
|
+
/** * Converts an exponent integer to its spoken word representation, * optionally using "squared" and "cubed" for exponents 2 and 3. * @param exponent The exponent value as an integer. * @param onlyUsePowerOf A boolean flag. If false, uses "squared" for 2 and "cubed" for 3. * If true, uses "to the power of two", "to the power of three", etc. * @returns The spoken word representation of the exponent. */
|
|
4
|
+
export function exponentSpokenWord(exponent, onlyUsePowerOf = false) {
|
|
5
|
+
const isNegative = exponent.startsWith("-") || exponent.startsWith("⁻");
|
|
6
|
+
let newExponentString = toRegularInteger(isNegative ? exponent.slice(1) : exponent);
|
|
7
|
+
if (!onlyUsePowerOf && !isNegative) {
|
|
8
|
+
if (newExponentString === "2") {
|
|
9
|
+
return "squared";
|
|
10
|
+
}
|
|
11
|
+
if (newExponentString === "3") {
|
|
12
|
+
return "cubed";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
let res = "to the power of " + (isNegative ? "negative " : "") + positiveInteger(parseInt(newExponentString));
|
|
16
|
+
return res;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=exponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exponent.js","sourceRoot":"","sources":["../../../../src/utils/stringBuilding/exponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,sZAAsZ;AAEtZ,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,iBAA0B,KAAK;IAClF,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACxE,IAAI,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACpF,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,iBAAiB,KAAK,GAAG,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,iBAAiB,KAAK,GAAG,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,GAAG,kBAAkB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC9G,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"negative.js","sourceRoot":"","sources":["../../../../src/utils/stringBuilding/negative.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAU,EAAE;IAChD,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;AACjC,CAAC,CAAC"}
|