Class TemplateEngine

A powerful template engine that supports multiple syntax styles and transformers

Example

// Basic usage with string interpolation
const result = await template('Hello, {{user.name}}!')({ user: { name: 'Flavio Ever' } });
// Result: "Hello, Flavio Ever!"

// With tagged template literals
const result = await template`Hello, ${'user.name'}!`({ user: { name: 'Flavio Ever' } });
// Result: "Hello, Flavio Ever!"

// With transformers
template.use({
transformers: {
uppercase: (v) => v.toUpperCase(),
lowercase: (v) => v.toLowerCase(),
capitalize: (v) => v.charAt(0).toUpperCase() + v.slice(1)
}
});
const result = await template('Name: {{user.name | uppercase}}')({ user: { name: 'Flavio Ever' } });
// Result: "Name: FLAVIO EVER"

Constructors

Methods

Constructors

Methods

  • Creates a template function that can be used with string literals or tagged template literals

    Type Parameters

    • T extends NestedObject

    Parameters

    • stringsOrTemplate: string | TemplateStringsArray

      The template string or template strings array

    • Rest ...keys: (PropPath<T> | ((data) => any))[]

      The template keys (paths or functions)

    Returns ((data) => Promise<string>)

    A function that takes data and returns a Promise with the processed template

      • (data): Promise<string>
      • Parameters

        • data: T

        Returns Promise<string>

    Example

    // String literal usage
    const tpl = template('Hello, {{name}}!');
    const result = await tpl({ name: 'Flavio Ever' });
    // Result: "Hello, Flavio Ever!"

    // Tagged template literal usage
    const tpl = template`Hello, ${'name'}!`;
    const result = await tpl({ name: 'Flavio Ever' });
    // Result: "Hello, Flavio Ever!"
  • Registers transformers for use in templates

    Parameters

    • config: {
          default?: TransformFn;
          fallback?: string;
          transformers: Record<string, ((...args) => any)>;
      }

      The transformers configuration object

      • Optional default?: TransformFn
      • Optional fallback?: string
      • transformers: Record<string, ((...args) => any)>

    Returns void

    Example

    template.use({
    transformers: {
    uppercase: (v) => v.toUpperCase(),
    lowercase: (v) => v.toLowerCase(),
    formatCurrency: (v, currency, locale) => new Intl.NumberFormat(locale, { style: 'currency', currency }).format(v)
    },
    default: (value) => value, // transformador padrão
    fallback: "N/A" // valor padrão para propriedades ausentes
    });