lib/liquid/expression.rb in liquid-4.0.0 vs lib/liquid/expression.rb in liquid-4.0.1
- old
+ new
@@ -19,23 +19,27 @@
'false'.freeze => false,
'blank'.freeze => MethodLiteral.new(:blank?, '').freeze,
'empty'.freeze => MethodLiteral.new(:empty?, '').freeze
}
+ SINGLE_QUOTED_STRING = /\A'(.*)'\z/m
+ DOUBLE_QUOTED_STRING = /\A"(.*)"\z/m
+ INTEGERS_REGEX = /\A(-?\d+)\z/
+ FLOATS_REGEX = /\A(-?\d[\d\.]+)\z/
+ RANGES_REGEX = /\A\((\S+)\.\.(\S+)\)\z/
+
def self.parse(markup)
if LITERALS.key?(markup)
LITERALS[markup]
else
case markup
- when /\A'(.*)'\z/m # Single quoted strings
+ when SINGLE_QUOTED_STRING, DOUBLE_QUOTED_STRING
$1
- when /\A"(.*)"\z/m # Double quoted strings
- $1
- when /\A(-?\d+)\z/ # Integer and floats
+ when INTEGERS_REGEX
$1.to_i
- when /\A\((\S+)\.\.(\S+)\)\z/ # Ranges
+ when RANGES_REGEX
RangeLookup.parse($1, $2)
- when /\A(-?\d[\d\.]+)\z/ # Floats
+ when FLOATS_REGEX
$1.to_f
else
VariableLookup.parse(markup)
end
end