Skip to content

Instantly share code, notes, and snippets.

@bloodyowl
Created November 1, 2012 18:05
Show Gist options
  • Save bloodyowl/3995440 to your computer and use it in GitHub Desktop.
Save bloodyowl/3995440 to your computer and use it in GitHub Desktop.
Simple Template System JavaScript

Simple Template System

Uses Craft.js (API docs).

Constructor

var myTemplate = Template.create({
   template : "<p>#{foo}<p><i>#{bar.baz}</i>",
   pattern :  /#\{([a-zA-Z0-9-_.]*)\}/g,
   defaults : {
     bar : { 
       baz : "foo"
     }
   }
 })

Options

  • template : String to evaluate
  • pattern (optional) : custom RegExp (default handles {{variable}})
  • defaults : Default values following the expected structure in the Template#evaluate function.

Evaluation

myTemplate.evaluate(data) // -> String
var Template = {
create : function(object){
if(!(this instanceof Template.create)) return new Template.create(object);
if(!object.pattern) object.pattern = /\{\{([a-zA-Z0-9-_.]*)\}\}/g;
if(object.defaults) object.defaults = Hash(object.defaults)
return Craft.extend(this, object)
}
}
Craft.extend(Template.create.prototype, {
evaluate : function (data){
var that = this
if(!data) return null;
data = Hash(data)
return that.template.replace(that.pattern, function(match, toReplace){
return data.get(toReplace) || that.defaults.get(toReplace) || ""
})
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment