string-cooked
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

string-cooked

In ECMAScript 6, a template tag function called t is any function that matches the signature (parts, ...subs), and can be used in this manner:

const s = t`interpolated string here`;

In many scenarios, you may want to use this as a way to simplify a function call, e.g.:

const s = t(`interpolated string here`);

To do so, we need some function f that interpolates a template string with the same behavior as an untagged template literal, a purpose not satisfied by the built-in function String.raw. This module, string-cooked, is a function that serves the aforementioned purpose.

Behavior

The function mimics two default behaviors.

Escape sequences interpretation

import cooked from 'string-cooked';

'\n'.length === 1;
`\n`.length === 1;
String.raw`\n`.length === 2;
cooked`\n`.length === 1;

Interpolation

import cooked from 'string-cooked';

const [a, b] = [1, 2];

const manual = a + ',' + b;
`${a},${b}` === manual;
String.raw`${a},${b}` === manual;
cooked`${a},${b}` === manual;

Examples

Making an html tag function using jsdom:

import cooked from 'string-cooked';
import {JSDOM} from 'jsdom';

export function html(strings, ...subs) {
  return new JSDOM(cooked(strings, ...subs));
}

// usage:
const dom = html`<!DOCTYPE html><body><p>hello</p></body>`;

Making an md tag function using markdown-js:

import cooked from 'string-cooked';
import {markdown} from 'markdown';

export function md(strings, ...subs) {
  return markdown.toHTML(cooked(strings, ...subs));
}

// usage:
const fragment = md`
  # Heading

  * Bullet 1
  * Bullet 2

`;

Package Sidebar

Install

npm i string-cooked

Weekly Downloads

1

Version

1.0.0

License

MIT

Last publish

Collaborators

  • kourge