liquid-node
Version:
Node.js port of Tobias Lütke's Liquid template engine.
25 lines (24 loc) • 1.65 kB
text/coffeescript
module.exports = class Liquid
@FilterSeparator = /\|/
@ArgumentSeparator = /,/
@FilterArgumentSeparator = /\:/
@VariableAttributeSeparator = /\./
@TagStart = /\{\%/
@TagEnd = /\%\}/
@VariableSignature = /\(?[\w\-\.\[\]]\)?/
@VariableSegment = /[\w\-]/
@VariableStart = /\{\{/
@VariableEnd = /\}\}/
@VariableIncompleteEnd = /\}\}?/
@QuotedString = /"[^"]*"|'[^']*'/
@QuotedFragment = ///#{@QuotedString.source}|(?:[^\s,\|'"]|#{@QuotedString.source})+///
@StrictQuotedFragment = /"[^"]+"|'[^']+'|[^\s|:,]+/
@FirstFilterArgument = ///#{@FilterArgumentSeparator.source}(?:#{@StrictQuotedFragment.source})///
@OtherFilterArgument = ///#{@ArgumentSeparator.source}(?:#{@StrictQuotedFragment.source})///
@SpacelessFilter = ///^(?:'[^']+'|"[^"]+"|[^'"])*#{@FilterSeparator.source}(?:#{@StrictQuotedFragment.source})(?:#{@FirstFilterArgument.source}(?:#{@OtherFilterArgument.source})*)?///
@Expression = ///(?:#{@QuotedFragment.source}(?:#{@SpacelessFilter.source})*)///
@TagAttributes = ///(\w+)\s*\:\s*(#{@QuotedFragment.source})///
@AnyStartingTag = /\{\{|\{\%/
@PartialTemplateParser = ///#{@TagStart.source}.*?#{@TagEnd.source}|#{@VariableStart.source}.*?#{@VariableIncompleteEnd.source}///
@TemplateParser = ///(#{@PartialTemplateParser.source}|#{@AnyStartingTag.source})///
@VariableParser = ///\[[^\]]+\]|#{@VariableSegment.source}+\??///