techhead-hogan

A fork of Twitter's mustache compiler.

npm install techhead-hogan
3 downloads in the last day
15 downloads in the last week
41 downloads in the last month

Hogan.js

Hogan.js is a compiler for the Mustache templating language. For information on Mustache, see the manpage and the spec.

What's New

This is the TECHHEAD fork of Hogan.js. It adds helpers and a few more enhancements and bug fixes.

Here's what's inside: (see test/index.js for ...er, tests... and usage examples)

Fixes
  • fixed Hogan.cacheKey() to consider delimiters (and new options)
  • allow method call chaining using dot notation
  • fixed method calls to be called with the proper this (must use fixMethodCalls option)
  • partials have access to full context stack
Enhancements
  • shorthand section close tag
  • pass current context (top of context stack) to method calls
  • pass index and array to method calls made within a list iteration section
  • piped helpers
Examples

Method call chaining

var t = Hogan.compile("{{method1.method2.method3}}"),
    r = t.render({
      method1: function() {
        return {
          method2: function() {
            return {
              method3: function() {
                  return 'test';
              }
            };
          }
        };
      }
    });
// r === "test"

Shorthand close tag and index passed to method call

var t = Hogan.compile("{#names}{^first}, {/}{.}{/names}", { delimeters: '{ }' }),
    r = t.render({
      names: ['Larry', 'Moe', 'Curly'],
      first: function(val, index) {
        return (index === 0);
      }
    });
// r === "Larry, Moe, Curly"

Piped helpers

var t = Hogan.compile("{{ names | join | ucase }}", { fixMethodCalls:1, enableHelpers:1 }),
    r = t.render({
      names: ['Larry', 'Moe', 'Curly'],
      separator: ', ',
      join: function(arr) {
        return arr.join(this.separator);
      },
      ucase: function(val) {
        return (""+val).toUpperCase();
      }
    });
// r === "LARRY, MOE, CURLY"

Authors

Robert Sayre

Jacob Thornton

Jonathan Hawkes (this fork only)

License

Copyright 2012 Jonathan Hawkes

Copyright 2011 Twitter, Inc.

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0

npm loves you