class Liquid::Expression
Constants
- FLOATS_REGEX
- INTEGERS_REGEX
- LITERALS
- RANGES_REGEX
Use an atomic group (?>…) to avoid pathological backtracing from malicious input as described in github.com/Shopify/liquid/issues/1357
Public Class Methods
parse(markup)
click to toggle source
# File lib/liquid/expression.rb, line 23 def self.parse(markup) return nil unless markup markup = markup.strip if (markup.start_with?('"') && markup.end_with?('"')) || (markup.start_with?("'") && markup.end_with?("'")) return markup[1..-2] end case markup when INTEGERS_REGEX Regexp.last_match(1).to_i when RANGES_REGEX RangeLookup.parse(Regexp.last_match(1), Regexp.last_match(2)) when FLOATS_REGEX Regexp.last_match(1).to_f else if LITERALS.key?(markup) LITERALS[markup] else VariableLookup.parse(markup) end end end