69 lines
3.0 KiB
Ruby
69 lines
3.0 KiB
Ruby
# Copyright (c) 2005 Tobias Luetke
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
# a copy of this software and associated documentation files (the
|
|
# "Software"), to deal in the Software without restriction, including
|
|
# without limitation the rights to use, copy, modify, merge, publish,
|
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
# permit persons to whom the Software is furnished to do so, subject to
|
|
# the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be
|
|
# included in all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
|
|
module Liquid
|
|
FilterSeparator = /\|/
|
|
ArgumentSeparator = ','
|
|
FilterArgumentSeparator = ':'
|
|
VariableAttributeSeparator = '.'
|
|
TagStart = /\{\%/
|
|
TagEnd = /\%\}/
|
|
VariableSignature = /\(?[\w\-\.\[\]]\)?/
|
|
VariableSegment = /[\w\-]\??/
|
|
VariableStart = /\{\{/
|
|
VariableEnd = /\}\}/
|
|
VariableIncompleteEnd = /\}\}?/
|
|
QuotedString = /"[^"]+"|'[^']+'/
|
|
QuotedFragment = /#{QuotedString}|(?:[^\s,\|'"]|#{QuotedString})+/
|
|
StrictQuotedFragment = /"[^"]+"|'[^']+'|[^\s,\|,\:,\,]+/
|
|
FirstFilterArgument = /#{FilterArgumentSeparator}(?:#{StrictQuotedFragment})/
|
|
OtherFilterArgument = /#{ArgumentSeparator}(?:#{StrictQuotedFragment})/
|
|
SpacelessFilter = /#{FilterSeparator}(?:#{StrictQuotedFragment})(?:#{FirstFilterArgument}(?:#{OtherFilterArgument})*)?/
|
|
Expression = /(?:#{QuotedFragment}(?:#{SpacelessFilter})*)/
|
|
TagAttributes = /(\w+)\s*\:\s*(#{QuotedFragment})/
|
|
AnyStartingTag = /\{\{|\{\%/
|
|
PartialTemplateParser = /#{TagStart}.*?#{TagEnd}|#{VariableStart}.*?#{VariableIncompleteEnd}/
|
|
TemplateParser = /(#{PartialTemplateParser}|#{AnyStartingTag})/
|
|
VariableParser = /\[[^\]]+\]|#{VariableSegment}+/
|
|
end
|
|
|
|
require 'liquid/drop'
|
|
require 'liquid/extensions'
|
|
require 'liquid/errors'
|
|
require 'liquid/strainer'
|
|
require 'liquid/context'
|
|
require 'liquid/tag'
|
|
require 'liquid/block'
|
|
require 'liquid/document'
|
|
require 'liquid/variable'
|
|
require 'liquid/file_system'
|
|
require 'liquid/template'
|
|
require 'liquid/htmltags'
|
|
require 'liquid/standardfilters'
|
|
require 'liquid/condition'
|
|
require 'liquid/module_ex'
|
|
|
|
# Load all the tags of the standard library
|
|
#
|
|
Dir[File.dirname(__FILE__) + '/liquid/tags/*.rb'].each { |f| require f }
|