National Preventative Mechanism

    nightink

    1.0.1 • Public • Published

    NightInk

    A teeny-tiny templating engine.

    NightInk is a teeny-tiny Javascript templating engine, written as an ES6 module. While there are loads of existing templating engines out there, I couldn't find one I liked (anyone know of a comparison site? :P) - so I wrote my own (it's adding to the problem, I know!).

    Also available in PHP: NightInk.php

    Installation

    Installation is done through npm:

    npm install --save nightink

    Usage

    Here's a basic example:

    import { NightInk } from '../NightInk.mjs';
    
    // .....
    
    let html = NightInk(template_string, {
    	// options here
    })

    The contents of the options object is substituted into the template string. Consider the following template:

    <p>Next launch in {{seconds}}!</p>
    <p>Rocket info: {{model}} carrying {{payload.summary}} for {{payload.owner.name}}, totalling {{totals.weight}} tons</p>

    ...with this options object:

    {
    	seconds: 10,
    	model: "Ariane 6",
    	payload: {
    		summary: "Sentinel-4",
    		owner: {
    			name: "Dr. Sean",
    			company: "Sean's Satellites Inc."
    		}
    	},
    	totals: {
    		weight: 450,
    		tomatoes: 56
    	}
    }

    All the appropriate values will get extracted from the options object and substituted into the template string automagically. Under normal circumstances, values are escaped with HTML-entities before substitution (if appropriate), for security purposes (no script-injection attacks here, thank you!). If you'd like to disable this (make sure you know what you're doing!), simply use a single set of curly braces:

    <p>The rocket escaped: {{escape_me}}</p>
    <p>The launchpad did not escape {no_escaping_here}</p>

    NightInk also has support for arrays (multiple levelled nested arrays are ok too :D). This is done like so:

    <p>To go to {{place_name}}, you will need:</p> 
    <ul>
    	{#each list}
    	<li>{{quantity}} x {{name}}</li>
    	{#endeach}
    </ul>
    {
    	plane_name: "space"
    	list: [
    		{ name: "Rocket", quantity: 1 },
    		{ name: "Astronaut", quantity: 3 },
    		{ name: "Fuel Cells", quantity: 55 },
    		{ name: "Launchpad", quantity: 1 }
    	]
    }

    License

    NightInk is licensed under the Mozilla Public Licence 2.0. A copy of this license can be found in the LICENSE file in this repository.

    Alternatively, tldr-legal has a summarythat you may find useful.

    Install

    npm i nightink

    DownloadsWeekly Downloads

    7

    Version

    1.0.1

    License

    MPL-2.0

    Unpacked Size

    22.6 kB

    Total Files

    6

    Last publish

    Collaborators

    • sbrl