28 lines
879 B
JavaScript
28 lines
879 B
JavaScript
|
export function splitEvery(value, delimiter, numDelimiters) {
|
||
|
if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {
|
||
|
throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery.");
|
||
|
}
|
||
|
const segments = value.split(delimiter);
|
||
|
if (numDelimiters === 1) {
|
||
|
return segments;
|
||
|
}
|
||
|
const compoundSegments = [];
|
||
|
let currentSegment = "";
|
||
|
for (let i = 0; i < segments.length; i++) {
|
||
|
if (currentSegment === "") {
|
||
|
currentSegment = segments[i];
|
||
|
}
|
||
|
else {
|
||
|
currentSegment += delimiter + segments[i];
|
||
|
}
|
||
|
if ((i + 1) % numDelimiters === 0) {
|
||
|
compoundSegments.push(currentSegment);
|
||
|
currentSegment = "";
|
||
|
}
|
||
|
}
|
||
|
if (currentSegment !== "") {
|
||
|
compoundSegments.push(currentSegment);
|
||
|
}
|
||
|
return compoundSegments;
|
||
|
}
|