liquid-node
Version:
Node.js port of Tobias Lütke's Liquid template engine.
45 lines (34 loc) • 1.31 kB
text/coffeescript
Liquid = require "../liquid"
module.exports = class Liquid.Engine
constructor: () ->
= {}
= () ->
Liquid.StandardFilters
= new Liquid.BlankFileSystem
isSubclassOf = (klass, ofKlass) ->
unless typeof klass is 'function'
false
else if klass == ofKlass
true
else
isSubclassOf klass.__super__?.constructor, ofKlass
for own tagName, tag of Liquid
continue unless isSubclassOf(tag, Liquid.Tag)
isBlockOrTagBaseClass = [Liquid.Tag,
Liquid.Block].indexOf(tag.constructor) >= 0
tagName.toLowerCase(), tag unless isBlockOrTagBaseClass
registerTag: (name, tag) ->
[name] = tag
registerFilters: (filters...) ->
filters.forEach (filter) =>
for own k, v of filter
::[k] = v if v instanceof Function
parse: (source) ->
template = new Liquid.Template
template.parse @, source
parseAndRender: (source, args...) ->
.then (template) ->
template.render(args...)
registerFileSystem: (fileSystem) ->
throw Liquid.ArgumentError "Must be subclass of Liquid.BlankFileSystem" unless fileSystem instanceof Liquid.BlankFileSystem
= fileSystem