diff --git a/lib/liquid.rb b/lib/liquid.rb index 3be44ab..3a30a69 100644 --- a/lib/liquid.rb +++ b/lib/liquid.rb @@ -32,17 +32,17 @@ module Liquid VariableEnd = /\}\}/ VariableIncompleteEnd = /\}\}?/ QuotedString = /"[^"]*"|'[^']*'/ - QuotedFragment = /#{QuotedString}|(?:[^\s,\|'"]|#{QuotedString})+/ + QuotedFragment = /#{QuotedString}|(?:[^\s,\|'"]|#{QuotedString})+/o StrictQuotedFragment = /"[^"]+"|'[^']+'|[^\s|:,]+/ - FirstFilterArgument = /#{FilterArgumentSeparator}(?:#{StrictQuotedFragment})/ - OtherFilterArgument = /#{ArgumentSeparator}(?:#{StrictQuotedFragment})/ - SpacelessFilter = /^(?:'[^']+'|"[^"]+"|[^'"])*#{FilterSeparator}(?:#{StrictQuotedFragment})(?:#{FirstFilterArgument}(?:#{OtherFilterArgument})*)?/ - Expression = /(?:#{QuotedFragment}(?:#{SpacelessFilter})*)/ - TagAttributes = /(\w+)\s*\:\s*(#{QuotedFragment})/ + FirstFilterArgument = /#{FilterArgumentSeparator}(?:#{StrictQuotedFragment})/o + OtherFilterArgument = /#{ArgumentSeparator}(?:#{StrictQuotedFragment})/o + SpacelessFilter = /^(?:'[^']+'|"[^"]+"|[^'"])*#{FilterSeparator}(?:#{StrictQuotedFragment})(?:#{FirstFilterArgument}(?:#{OtherFilterArgument})*)?/o + Expression = /(?:#{QuotedFragment}(?:#{SpacelessFilter})*)/o + TagAttributes = /(\w+)\s*\:\s*(#{QuotedFragment})/o AnyStartingTag = /\{\{|\{\%/ - PartialTemplateParser = /#{TagStart}.*?#{TagEnd}|#{VariableStart}.*?#{VariableIncompleteEnd}/ - TemplateParser = /(#{PartialTemplateParser}|#{AnyStartingTag})/ - VariableParser = /\[[^\]]+\]|#{VariableSegment}+\??/ + PartialTemplateParser = /#{TagStart}.*?#{TagEnd}|#{VariableStart}.*?#{VariableIncompleteEnd}/o + TemplateParser = /(#{PartialTemplateParser}|#{AnyStartingTag})/o + VariableParser = /\[[^\]]+\]|#{VariableSegment}+\??/o end require 'liquid/drop' diff --git a/lib/liquid/block.rb b/lib/liquid/block.rb index c96b94c..a98874f 100644 --- a/lib/liquid/block.rb +++ b/lib/liquid/block.rb @@ -1,10 +1,10 @@ module Liquid class Block < Tag - IsTag = /^#{TagStart}/ - IsVariable = /^#{VariableStart}/ - FullToken = /^#{TagStart}\s*(\w+)\s*(.*)?#{TagEnd}$/ - ContentOfVariable = /^#{VariableStart}(.*)#{VariableEnd}$/ + IsTag = /^#{TagStart}/o + IsVariable = /^#{VariableStart}/o + FullToken = /^#{TagStart}\s*(\w+)\s*(.*)?#{TagEnd}$/o + ContentOfVariable = /^#{VariableStart}(.*)#{VariableEnd}$/o def parse(tokens) @nodelist ||= [] diff --git a/lib/liquid/htmltags.rb b/lib/liquid/htmltags.rb index dfb8c76..16efb71 100644 --- a/lib/liquid/htmltags.rb +++ b/lib/liquid/htmltags.rb @@ -1,6 +1,6 @@ module Liquid class TableRow < Block - Syntax = /(\w+)\s+in\s+(#{QuotedFragment}+)/ + Syntax = /(\w+)\s+in\s+(#{QuotedFragment}+)/o def initialize(tag_name, markup, tokens) if markup =~ Syntax diff --git a/lib/liquid/tags/assign.rb b/lib/liquid/tags/assign.rb index 1ce66b4..3540b76 100644 --- a/lib/liquid/tags/assign.rb +++ b/lib/liquid/tags/assign.rb @@ -9,7 +9,7 @@ module Liquid # {{ foo }} # class Assign < Tag - Syntax = /(#{VariableSignature}+)\s*=\s*(.*)\s*/ + Syntax = /(#{VariableSignature}+)\s*=\s*(.*)\s*/o def initialize(tag_name, markup, tokens) if markup =~ Syntax diff --git a/lib/liquid/tags/case.rb b/lib/liquid/tags/case.rb index 9597059..4e2fb2c 100644 --- a/lib/liquid/tags/case.rb +++ b/lib/liquid/tags/case.rb @@ -1,7 +1,7 @@ module Liquid class Case < Block - Syntax = /(#{QuotedFragment})/ - WhenSyntax = /(#{QuotedFragment})(?:(?:\s+or\s+|\s*\,\s*)(#{QuotedFragment}.*))?/ + Syntax = /(#{QuotedFragment})/o + WhenSyntax = /(#{QuotedFragment})(?:(?:\s+or\s+|\s*\,\s*)(#{QuotedFragment}.*))?/o def initialize(tag_name, markup, tokens) @blocks = [] diff --git a/lib/liquid/tags/cycle.rb b/lib/liquid/tags/cycle.rb index 1df692e..9b3f342 100644 --- a/lib/liquid/tags/cycle.rb +++ b/lib/liquid/tags/cycle.rb @@ -13,8 +13,8 @@ module Liquid #