Skip to content

mattmccray/liquid.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Liquid.js

General

This is a complete port of Liquid from Ruby to JavaScript. Any template that Ruby Liquid can compile and render, Liquid.js should too.

Liquid.js does not use eval or with, so it’s pretty clean and really safe.

Getting Started

… I’ll write this soon …

Differences

  1. Ranges. JavaScript doesn’t really have Ranges like Ruby does. So when Liquid.js comes across a range “(1..5)”, it creates an Array with the values 1 through 5. WARNING: It does assume numeric ranges, so (A..Z) won’t work.
  2. ‘replace’ and ‘replace_first’ filters build RegExps from the input, so you can actually define a regexp to use in your replacement.
  3. ‘include’ tag. By default, this will return a Liquid error (but not an exception). To use the ‘include’ tag, you’ll need to implement your own ‘filesystem’ support. Which, in Liquid.js, just means you override the Liquid.readTemplateFile function to suit your own needs. Here’s an example:
<script>
  
  Liquid.readTemplateFile = function(path) {
    var elem = $(path);
    if(elem) {
      return elem.innerHTML;
    } else {
      return path +" can't be found."; 
      // Or throw and error, or whatever you want...
    }
  }
  
  var src = "{% include 'myOtherTemplate' with current_user %}";

  var tmpl = Liquid.parse( src );
  
  alert( tmpl.render({ current_user:'M@' }));
  
</script>
<!-- Browsers ignore script blocks with an unrecognized type.  -->
<!-- Makes for pretty good inline template storage.  -->
<script type="text/liquid" id="myOtherTemplate">
  Hello, {{ current_user }}!
</script>

Known Issues

  1. Not tested in Internet Exploder. Known to work in Safari 3.1+ and FireFox 3+.

References:

Todo

  • Would like to remove dependency on Mootools.
  • Need good testing framework to put it through it’s paces.;
    • Use JavaScriptMVC’s test framework?
    • Use Rhino for console testing?

About

JavaScript port of Tobias Luetke's Liquid template engine.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages