npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@gustavnikolaj/string-utils

v2.0.0

Published

Template string utilities

Downloads

18,556

Readme

Template String Utilities

npm version Build Status Coverage Status

deindent

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.

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:

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:

import deindent from "@gustavnikolaj/string-utils/deindent";

collapse

Collapses whitespace in a line wrapped over multiple lines.

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:

import collapse from "@gustavnikolaj/string-utils/collapse";

reflow

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.

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:

reflow(
  "This is a very long string that is for sure longer than 30 characters.",
  30
);

Can also be required directly:

import reflow from "@gustavnikolaj/string-utils/reflow";

qw

A qw (quote word) helper for old, disgruntled perl programmers.

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:

import qw from "@gustavnikolaj/string-utils/qw";