Socket
Socket
Sign inDemoInstall

@master/text-template

Package Overview
Dependencies
0
Maintainers
2
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @master/text-template

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


Version published
Maintainers
2
Created

Readme

Source



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.

Keywords

FAQs

Last updated on 15 Jul 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc