Skip to content

A lightweight recursive template engine for Markdown and JavaScript with includes, loops, and logic blocks.

Notifications You must be signed in to change notification settings

johanlabs/inflect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŒ€ Inflect

Inflect is a lightweight recursive template engine for Node.js.
It supports includes, loops, conditions, switch blocks, and inline expressions.


πŸš€ Installation

npm install inflect

or

yarn add inflect

🧩 Usage

CommonJS

const { renderTemplate } = require('inflect');

const template = `
Hello {{ name }}!
{#if items.length > 0}
Items:
{#each items as item, i}- {{ i + 1 }}. {{ item }}{/each}
{:else}
No items found.
{/if}
`;

const result = renderTemplate(template, {
  name: "John",
  items: ["Apples", "Bananas"]
});

console.log(result);

ES Modules

import { renderTemplate } from "inflect";

const template = `
{#switch lang}
  {#case 'en'}Hello {{ name }}!{/case}
  {#case 'pt'}OlΓ‘ {{ name }}!{/case}
  {:default}Hi!{/default}
{/switch}
`;

console.log(renderTemplate(template, { lang: 'pt', name: 'Maria' }));

🧠 Features

πŸ” Loops

{#each items as item, i}
  {{ i + 1 }}. {{ item }}
{/each}

βš™οΈ Conditions

{#if age >= 18}
  You are an adult.
{:else if age >= 13}
  Teenager.
{:else}
  Child.
{/if}

πŸ”„ Switch / Case

{#switch lang}
  {#case 'en'}Hello{/case}
  {#case 'es'}Hola{/case}
  {:default}Hi{/default}
{/switch}

🧩 Includes

{#include ./partials/header}

Automatically tries .mdjs or .md extension if none is provided.


🧱 Syntax Summary

Block Type Syntax Example
Variable {{ name }}
Include {#include ./path/file}
Loop {#each items as item, i}...{/each}
Conditionals {#if cond}...{:else if cond}...{:else}...{/if}
Switch / Case {#switch x}{#case v}...{/case}{:default}...{/switch}

πŸ“¦ Example Template

# Welcome {{ user }}

{#if notifications.length > 0}
You have {{ notifications.length }} new notifications:

{#each notifications as n, i}
- ({{ i + 1 }}) {{ n.title }}
{/each}
{:else}
No notifications πŸŽ‰
{/if}

Developed with ❀️ using Inflect

About

A lightweight recursive template engine for Markdown and JavaScript with includes, loops, and logic blocks.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published