Inflect โ a lightweight recursive template engine for Markdown and JavaScript with includes, loops, and logic blocks.
npm install johanlabs-inflectInflect is a lightweight recursive template engine for Node.js.
It supports includes, loops, conditions, switch blocks, and inline expressions.
---
``bash``
npm install inflect
or
`bash`
yarn add inflect
---
`js
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);
`
`js
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' }));
`
---
`md`
{#each items as item, i}
{{ i + 1 }}. {{ item }}
{/each}
`md`
{#if age >= 18}
You are an adult.
{:else if age >= 13}
Teenager.
{:else}
Child.
{/if}
`md`
{#switch lang}
{#case 'en'}Hello{/case}
{#case 'es'}Hola{/case}
{:default}Hi{/default}
{/switch}
`md`
{#include ./partials/header}
> Automatically tries .mdjs or .md extension if none is provided.
---
| Block Type | Syntax Example |
| ------------- | ------------------------------------------------------ |
| Variable | {{ name }} |{#include ./path/file}
| Include | |{#each items as item, i}...{/each}
| Loop | |{#if cond}...{:else if cond}...{:else}...{/if}
| Conditionals | |{#switch x}{#case v}...{/case}{:default}...{/switch}
| Switch / Case | |
---
`mdWelcome {{ 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