summaryrefslogtreecommitdiff
path: root/alarm/node_modules/string-strip-html/examples/widow-word-removal-from-html.js
blob: bcc07b128a7b8bc503aafcac5d660da42d162a96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Widow word removal from text within HTML

import { strict as assert } from "assert";
import { stripHtml } from "../dist/string-strip-html.esm.js";
import { removeWidows } from "../../string-remove-widows";

const someHtml = `The quick brown fox jumps of the lazy dog.<div class="a">`;

// default widow word removal libs are not aware of HTML:
// -----------------------------------------------------------------------------

assert.equal(
  removeWidows(someHtml).res,
  `The quick brown fox jumps of the lazy dog.<div&nbsp;class="a">` // 😱
);

// luckily, removeWidows() consumes optional HTML tag locations
assert.equal(
  removeWidows(someHtml, {
    tagRanges: stripHtml(someHtml)
      // remove the third argument, what to insert ("&nbsp;" string in these cases)
      .ranges.map(([from, to]) => [from, to]),
  }).res,
  `The quick brown fox jumps of the lazy&nbsp;dog.<div class="a">` // ✅
);