Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

stalin

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

stalin

Badass mustache compiler

  • 0.2.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

Stalin

Badass mustache compiler

Why?

  • In Soviet Russia template compiles you
  • Compiled templates have no dependencies
  • Minified and gzipped version is 1KB in size
  • Joseph Stalin => stalin.js

Installation

# Global
npm -g install stalin

# Local
npm install stalin

Difference

  • Lambdas are not supported (no simple way to get template source from compiled one)
  • Partials are functions (templates or helpers at your choise, see below)
  • {{{ }}} Not supported, use {{& }} instead to get unescaped output
  • Magic RegExp characters can not be used as delimiters (ex: {{=[ ]=}})
  • All CRs are converted to LFs before processing
  • LFs from lines with standalone tags are not removed

Usage

API

var Stalin = require('stalin');

/* Compile template and save reference */
Stalin('example', '{{#first}}{{example}}{{/first}}');

/* Render compiled template */
console.log(Stalin.example({ first: true, example: 'Hello, world!' }));

Some internal functions available

  • Stalin.process - compile template to string and return it
  • Stalin.compile - compile, eval and return reference

Partials

Partials can be defined as another template

Stalin('link', '<a href="{{&href}}">{{title}}</a>');

or as custom function

Stalin.link = function (scope, escape) {
	/* Call to scope() does scope lookup and returns unescaped value */
	return '<a href="' + scope('href') + '">' + escape(scope('title')) + '</a>';
};

and used later

Stalin('linkbar', '{{#linkbar.length}}<ul>{{#linkbar}}<li>{{>link}}</li>{{/linkbar}}</ul>{{/linkbar.length}}');

console.log(Stalin.linkbar({
	linkbar: [
		{ href: '/about',    title: 'About' },
		{ href: '/contacts', title: 'Contacts' }
	]
}));

to get result like that

<ul><li><a href="/about">About</a></li><li><a href="/contacts">Contacts</a></li></ul>

Compilation

# Compile all *.mustache files in folder
# and subfolders and save with .js extension
stalin public/templates/

# Compile single file and print it
stalin public/index.mustache

Client

To use compiled templates without Stalin itself you need to define window.Stalin before loading any template. Templates will register themselves on Stalin object when loaded.

<script>var Stalin = {};</script>
<script src="/templates/index.js"></script>
<script>console.log(Stalin.index({ test: true }));</script>

Copyright 2013 Alexander Nazarov. All rights reserved.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Keywords

FAQs

Package last updated on 05 Mar 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc