Template string utilities
npm install @gustavnikolaj/string-utils


Strips indentation based on the indentation found on the first line. Will leave
extra newlines and extra indentation intact. It will however remove leading and
trailing line breaks.
``js
import { deindent } from "@gustavnikolaj/string-utils";
console.log(deindent
foo bar
qux baz); // => "foo bar\nqux baz"
console.log(deindent
foo bar
qux baz); // => "foo bar\n qux baz"
console.log(deindent
foo bar
qux baz); // => "foo bar\n\n qux baz"`
Can be used as a regular function as well as a tag for template strings:
`js
console.log(deindent
foo bar
qux baz); // => "foo bar\nqux baz"
console.log(deindent(
foo bar
qux baz)); // => "foo bar\nqux baz"`
Can also be required directly:
`js`
import deindent from "@gustavnikolaj/string-utils/deindent";
Collapses whitespace in a line wrapped over multiple lines.
`js
import { collapse } from "@gustavnikolaj/string-utils";
console.log(collapse
foo bar
qux baz); // => "foo bar qux baz"
console.log(collapse
foo bar
qux baz); // => "foo bar qux baz"
console.log(collapse
This is a very long string that I rather not have to put in a single line
because then it would make my code spill over and take more than the 80
characters per line that I prefer.);`
// => "This is a very long string that I rather not have to put in a single " +
// "line because then it would make my code spill over and take more " +
// "than the 80 characters per line that I prefer."
Can also be required directly:
`js`
import collapse from "@gustavnikolaj/string-utils/collapse";
Strips indentation as deindent, but will persist paragraphs (separated by double
newlines like in markdown) and reflow the paragraphs so that they fit within a
defined width.
`js
import { reflow } from "@gustavnikolaj/string-utils";
console.log(reflow(8)
foo bar qux baz foo bar); // => "foo bar\nqux baz\nfoo bar"
console.log(reflow(80)
foo bar
qux baz); // => "foo bar\n\nqux baz"
console.log(reflow(30)
This is a very long string that is for sure longer than 30 characters.
This is a very long string that is for sure longer than 30 characters.);
/* => This is a very long string
that is for sure longer than
30 characters.
This is a very long string
that is for sure longer than
30 characters. */
`
It also supports being called as a regular non-template-string function:
`js`
reflow(
"This is a very long string that is for sure longer than 30 characters.",
30
);
Can also be required directly:
`js`
import reflow from "@gustavnikolaj/string-utils/reflow";
A qw (quote word) helper for old,
disgruntled perl programmers.
`js
import { qw } from "@gustavnikolaj/string-utils";
const blah = "hey";
console.log(qw foo bar
quux ${blah} baz); // => [ 'foo', 'bar', 'quux', 'hey', 'baz' ]`
Can also be imported directly:
`js``
import qw from "@gustavnikolaj/string-utils/qw";