Ruby入门-liquid源码解读
Published On February 23, 2015
FilterSeparator = /\|/
ArgumentSeparator = ','.freeze
FilterArgumentSeparator = ':'.freeze
VariableAttributeSeparator = '.'.freeze
TagStart = /\{\%/
TagEnd = /\%\}/
VariableSignature = /\(?[\w\-\.\[\]]\)?/
# 在中间有字符的情况下匹配两边尽可能少的括号(最多一个,但是如果有括号必须被匹配上,不能不匹配),中括号[]内列出的皆为并列关系,匹配任意一个即可,而不是必须完全匹配。
VariableSegment = /[\w\-]/ # 匹配字符或减号
VariableStart = /\{\{/
# 匹配两个连续的左大括号(中间有分隔符也不行。(有多个括号会按从左到右的顺序两个两个匹配)
VariableEnd = /\}\}/ # 匹配两个连续的右大括号
VariableIncompleteEnd = /\}\}?/ # 匹配1-2个右大括号
QuotedString = /"[^"]*"|'[^']*'/
# ([^x] 是匹配除了x以外的任意字符),全部意义就是在匹配包括两个" "间的所有字符,用了一个 | 作为 '或'。
QuotedFragment = /#{QuotedString}|(?:[^\s,\|'"]|#{QuotedString})+/o
# 匹配被括号括起来的连续字符 或 没被括号括起来的连续字符,(字符串间被空格等分隔符隔断)加号+是匹配1个字符及以上(乘号 * 是匹配0个字符及以上)。
TagAttributes = /(\w+)\s*\:\s*(#{QuotedFragment})/o
# 匹配 字符串1 : 字符串2
AnyStartingTag = /\{\{|\{\%/
# 匹配 \{\{ 或 \{\%
PartialTemplateParser = /#{TagStart}.*?#{TagEnd}|#{VariableStart}.*?#{VariableIncompleteEnd}/om
#
TemplateParser = /(#{PartialTemplateParser}|#{AnyStartingTag})/om
VariableParser = /\[[^\]]+\]|#{VariableSegment}+\??/o
Tags: Ruby