a fast and simple node.js package for getting a paragraph wrapped at a fixed line length
fast-word-wrap
has been proven (see benchmark) to be faster than wordwrap (31x), wrap-text (11x) and word-wrap (10x)
$ npm install fast-word-wrap
const wrap = require("fast-word-wrap");
const str = "The quick brown fox jumps over the lazy dog."; // the newline-free string to wrap
const cpl = 10; // the maximum number of characters per line
result = wrap(str, cpl);
console.log(result); // "The quick\nbrown fox\njumps over\nthe lazy\ndog.\n"
outputs
The quick
brown fox
jumps over
the lazy
dog.
fast-word-wrap
won't work correctly if the input string contains newlines; if that's the case, simply do
partials = [];
for (p of str.split("\n").filter(s => s)) {
partials.push(wrap(p, cpl));
}
result = partials.join("");
$ npm test test/unit.js
outputs
> [email protected] test
> ava --verbose "test/unit.js"
✔ no wrap
ℹ The quick brown fox jumps over the lazy dog.
✔ wrap
ℹ The quick
brown fox
jumps over
the lazy
dog.
✔ do your best
ℹ The
quick
brown
fox
jumps
over
the
lazy
dog.
✔ wrap a fragment of "El inmortal" by Jorge Luis Borges
ℹ [output omitted for brevity in readme]
─
4 tests passed
$ npm test test/benchmark.js
outputs in my laptop
> [email protected] test
> ava --verbose test/benchmark.js
✔ wrap faster than others (2.5s)
ℹ 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
ℹ wrapping 10000 times with each package a fragment of "El inmortal" by Jorge Luis Borges...
ℹ wordwrap took 1500.74 ms
ℹ wrap-text took 532.84 ms
ℹ word-wrap took 506.52 ms
ℹ fast-word-wrap took 47.02 ms
─
1 test passed
the fragment used for testing is a transcription I did from my copy of "Nueva antología personal" by Jorge Luis Borges (ed. Emecé, 1st edition, 1968); I manually wrapped it at 80 characters per line to get the golden master