string-process-comma-separated examples

Table of Contents

Quick Take

import { strict as assert } from "assert";
import { processCommaSep } from "string-process-comma-separated";

const gatheredChunks = [];
const gatheredErrors = [];
const rawnbsp = "\u00a0";

// it's a callback-interface:
processCommaSep(
  `<FRAMESET rows=" ,,\t50% ,${rawnbsp} 50% ,\t\t,">`,
  {
    from: 16, // <- beginning of the attribute's value
    to: 35, // <- ending of the attribute's value
    separator: ",",
    cb: (idxFrom, idxTo) => {
      gatheredChunks.push([idxFrom, idxTo]);
    },
    errCb: (ranges, message) => {
      gatheredErrors.push({ ranges, message });
    },
  }
);

assert.deepEqual(gatheredChunks, [
  [20, 23],
  [27, 30],
]);

assert.deepEqual(gatheredErrors, [
  {
    ranges: [[16, 17]],
    message: "Remove whitespace.",
  },
  { ranges: [[17, 18]], message: "Remove separator." },
  { ranges: [[18, 19]], message: "Remove separator." },
  {
    ranges: [[19, 20]],
    message: "Remove whitespace.",
  },
  {
    ranges: [[23, 24]],
    message: "Remove whitespace.",
  },
  {
    ranges: [[25, 27]],
    message: "Remove whitespace.",
  },
  {
    ranges: [[30, 31]],
    message: "Remove whitespace.",
  },
  {
    ranges: [[32, 34]],
    message: "Remove whitespace.",
  },
  { ranges: [[31, 32]], message: "Remove separator." },
  { ranges: [[34, 35]], message: "Remove separator." },
]);