mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-12-17 09:46:02 +00:00
30 lines
780 B
TypeScript
30 lines
780 B
TypeScript
export type NumberExtractionType = 'smart' | 'delimiter';
|
|
|
|
function getAllNumbers(text: string): number[] {
|
|
const regex = /\d+/g;
|
|
const matches = text.match(regex);
|
|
return matches ? matches.map(Number) : [];
|
|
}
|
|
|
|
export const compute = (
|
|
input: string,
|
|
extractionType: NumberExtractionType,
|
|
printRunningSum: boolean,
|
|
separator: string
|
|
) => {
|
|
let numbers: number[] = [];
|
|
if (extractionType === 'smart') {
|
|
numbers = getAllNumbers(input);
|
|
} else {
|
|
const parts = input.split(separator);
|
|
// Filter out and convert parts that are numbers
|
|
numbers = parts
|
|
.filter((part) => !isNaN(Number(part)) && part.trim() !== '')
|
|
.map(Number);
|
|
}
|
|
return numbers.reduce(
|
|
(previousValue, currentValue) => previousValue + currentValue,
|
|
0
|
|
);
|
|
};
|