Skip to content

Lightweight package to format string template to a new string that is replaced all parameters with provided data

License

Notifications You must be signed in to change notification settings

zgid123/string-interpolation-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e4a22ff · Apr 29, 2023

History

10 Commits
Nov 20, 2021
Jan 15, 2022
Apr 29, 2023
Apr 29, 2023
Jan 15, 2022
Jan 15, 2022
Nov 20, 2021
Apr 29, 2023
Jan 15, 2022
Mar 24, 2020
Apr 13, 2022
Apr 29, 2023
Apr 29, 2023
Apr 6, 2023
Apr 6, 2023
Mar 24, 2020
Apr 6, 2023

Repository files navigation

Introduction

Simple package to format string template to a new string that is replaced all params with provided variables.

Installation

$ npm install string-interpolation-js

Usage

With array value

import interpole from 'string-interpolation-js';

const source = 'This function can :0 this template with :1 value';

console.log(interpole(source, ['format', 'array'])); // This function can format this template with array value

With object value

import interpole from 'string-interpolation-js';

const source = 'This function can :method this template with :type value';

console.log(
  interpole(source, {
    type: 'object',
    method: 'format',
  }),
); // This function can format this template with object value

What happens if your template has params more than the value you provided?

import interpole from 'string-interpolation-js';

const source = 'This function can :0 this template with :1 value';

console.log(interpole(source, ['format'])); // This function can format this template with :1 value

const source = 'This function can :method this template with :type value';

console.log(
  interpole(source, {
    method: 'format',
  }),
); // This function can format this template with :type value

If you want to remove those redundant params, use this option

import interpole from 'string-interpolation-js';

const source = 'This function can :0 this template with :1 value';

console.log(interpole(source, ['format'], { clearDirtyParam: true })); // This function can format this template with  value

const source = 'This function can :method this template with :type value';

console.log(
  interpole(
    source,
    {
      method: 'format',
    },
    {
      clearDirtyParam: true,
    },
  ),
); // This function can format this template with  value

If you have other pattern for your template, you can pass the pattern as regex or string

import interpole from 'string-interpolation-js';

const source = 'Hello {{ name }}';

console.log(
  interpole(
    source,
    { name: 'Alpha' },
    {
      // if true, there is no additional between specElement and pattern indicator
      exactMatch: true,
      // this is the specified element that is replaced with a key of data in the pattern
      // in this example, the key 'name' is replaced for '_' in the pattern '{{ _ }}'
      specElement: '_',
      pattern: '{{ _ }}',
    },
  ),
); // Hello Alpha

console.log(
  interpole(
    source,
    { name: 'Alpha' },
    {
      exactMatch: true,
      specElement: '_',
      pattern: '{{  _  }}',
    },
  ),
); // Hello {{ name }}

=============================================

const source = 'Hello [[ name ]]';

console.log(
  interpole(
    source,
    { name: 'Alpha' },
    {
      exactMatch: true,
      specElement: '_',
      pattern: '[[ _ ]]',
    },
  ),
); // Hello Alpha

=============================================

const source = 'Hello [[    name         ]]';

console.log(
  interpole(
    source,
    { name: 'Alpha' },
    {
      specElement: '_',
      pattern: '[[ _ ]]',
    },
  ),
); // Hello Alpha

console.log(
  interpole(
    source,
    { name: 'Alpha' },
    {
      exactMatch: true,
      specElement: '_',
      pattern: '[[ _ ]]',
    },
  ),
); // Hello [[    name         ]]

=============================================

const source = 'Hello {{ name }}';

console.log(
  interpole(
    source,
    { name: 'Alpha' },
    {
      pattern: /{{ \w* }}/g,
    },
  ),
); // Hello Alpha

You can pass object value to interpole the string

import interpole from 'string-interpolation-js';

const source = 'Hello {{ user.name }}';

console.log(
  interpole(
    source,
    {
      user: {
        name: 'Alpha',
      },
    },
    {
      // if true, there is no additional between specElement and pattern indicator
      exactMatch: true,
      // this is the specified element that is replaced with a key of data in the pattern
      // in this example, the key 'name' is replaced for '_' in the pattern '{{ _ }}'
      specElement: '_',
      pattern: '{{ _ }}',
    },
  ),
); // Hello Alpha

Changelogs

  • 1.0.4: support template literals, it will exclude the pattern if has template literals as prefix
import interpole from 'string-interpolation-js';

const source = 'Hello {{ user.name }} ${{ user.name }}';

console.log(
  interpole(
    source,
    {
      user: {
        name: 'Alpha',
      },
    },
    {
      exactMatch: true,
      specElement: '_',
      pattern: '{{ _ }}',
      templateLiterals: '$',
    },
  ),
); // Hello Alpha {{ user.name }}

About

Lightweight package to format string template to a new string that is replaced all parameters with provided data

Resources

License

Stars

Watchers

Forks

Packages

No packages published