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

Comments: