fast-word-wrap

a fast and simple node.js package for getting a paragraph wrapped at a fixed line length

Usage no npm install needed!

<script type="module">
  import fastWordWrap from 'https://cdn.skypack.dev/fast-word-wrap';
</script>

README

fast-word-wrap

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 (28x), wrap-text (10x) and word-wrap (8x)

toc

installation

$ npm install fast-word-wrap

usage

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.

wrapping strings containing newlines

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("");

testing

unit

$ npm test test/unit.js

outputs


> fast-word-wrap@1.0.0 test /home/ale/dev/fast-word-wrap
> 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

benchmark

$ npm test test/benchmark.js

outputs in my laptop


> fast-word-wrap@1.0.0 test /home/ale/dev/fast-word-wrap
> ava --verbose "test/benchmark.js"


  ✔ wrap faster than others (5.6s)
    ℹ Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
    ℹ wrapping 10000 times with each package a fragment of "El inmortal" by Jorge Luis Borges...
    ℹ wordwrap took 3432.02 ms
    ℹ wrap-text took 1185.77 ms
    ℹ word-wrap took 948.94 ms
    ℹ fast-word-wrap took 123.29 ms
  ─

  1 test passed

barh

about the sample text and the golden master

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