text-template-forked
TypeScript icon, indicating that this package has built-in type declarations

1.0.7 • Public • Published



logo

text-template

Tokenize any texts and render with data ( less than 2KB )

CI status npm license

On this page

CONTENTS

1. Download

npm install @master/text-template

CDN

Usage

Getting start

import { TextTemplate } from '@master/text-template';

Behaviors of default options

const template = new TextTemplate(text);

equal to

const template = new TextTemplate(text, {
    start: '{{',
    end: '}}',
    behavior: '', // replace
    language: '', // /* data */ /* */,
    removeOnError: false,
    delimiter: ' ',
});

Replace with data tokens

const template = new TextTemplate('Hi {{ username }}');
const renderedText = template.render({ username: 'Aron' });

output renderedText:

Hi Aron

Insert with slot tokens

const html = `
    <title>
        <!-- title --><!-- -->
    <title>
`;
const template = new TextTemplate(html, {
    behavior: 'slot',
    language: 'html'
});
const renderedHtml = template.render({ title: 'Hello World' });

output renderedHtml:

<title>
    <!-- title -->Hello World<!-- -->
<title>

The slot token isn't removed, which means you can keep result and render multiple times.

Combo above behaviors

const readmeText = `
    # Hi {{ username }}
    <!-- description --><!-- -->
`;

const data = {
    username: 'Aron',
    description: 'Hello World {{ username }}'
}

// 1. Insert
const slotTemplate = new TextTemplate(readmeText, {
    behavior: 'slot',
    language: 'readme'
});

// 2. Replace
const template = new TextTemplate(slotTemplate.render(data));

const renderedReadmeText = template.render(data);

output renderedReadmeText:

# Hi Aron
<!-- description -->Hello World Aron<!-- -->

Custom start and end token

const template = new TextTemplate('Hi ${ username }', {
    start: '${',
    end: '}'
});

Tokenize with js syntax

const data = {
    people:  ['Aron', 'Joy']
}
const text = `/* people.join(' ❤️ ') */ /* */`;
const template = new TextTemplate(text);
const renderedText = template.render(data);

output renderedText

/* people.join(' ❤️ ') */ Aron ❤️ Joy /* */

Remove token when errors occur

removeOnError: true

const text = 'Hi {{ username }}, welcome.';
const data = {};
const t1 = new TextTemplate(text);
const t2 = new TextTemplate(text, { removeOnError: true });
const r1 = t1.render(data);
const r2 = t2.render(data);

output r1

Hi {{ username }}, welcome.

output r2

Hi , welcome.

Custom identification delimiter

default

const template = new TextTemplate(html, {
    behavior: 'slot',
    language: 'html'
});
<title><!-- name -->text-template<!----></title>

custom

const template = new TextTemplate(html, {
    behavior: 'slot',
    language: 'html',
    delimiter: ' / ' 
});
<title><!-- name --><!-- / --></title>

Options

The default values of all options are undefined, and each has a default behavior.

  • start Default {{. Replace or slot start token
  • end Default }}. Replace or slot end token
  • behavior Default replace. Specify render behavior
  • language Required behavior: 'slot'. Specify using comment language to set start and end quickly.
    • '' relative to /* data */ /* */ as default
    • 'html', readme relative to <!-- data --> <!-- -->
    • 'pascal' relative to (* data *) (* *) or { data } { }
    • 'forth' relative to ( data ) ()
    • 'haskell' relative to {- data -} {- -}
  • delimiter Default . Required behavior: 'slot'. Specify middle delimiter for identifying end
  • removeOnError Default false. If true, the token will be removed when the data doesn't match or js syntax go wrong.

Package Sidebar

Install

npm i text-template-forked

Weekly Downloads

1

Version

1.0.7

License

MIT

Unpacked Size

9.8 kB

Total Files

6

Last publish

Collaborators

  • dannyvargas23