Sha256: 7eaefd36ee7eef44d946aabcc77d78e0a9c38ab3a09b13cdb2b83484ea682778

Contents?: true

Size: 806 Bytes

Versions: 11

Compression:

Stored size: 806 Bytes

Contents

module Liquid
  class Expression
    LITERALS = {
      nil => nil, 'nil'.freeze => nil, 'null'.freeze => nil, ''.freeze => nil,
      'true'.freeze  => true,
      'false'.freeze => false,
      'blank'.freeze => :blank?,
      'empty'.freeze => :empty?
    }

    def self.parse(markup)
      if LITERALS.key?(markup)
        LITERALS[markup]
      else
        case markup
        when /\A'(.*)'\z/m # Single quoted strings
          $1
        when /\A"(.*)"\z/m # Double quoted strings
          $1
        when /\A(-?\d+)\z/ # Integer and floats
          $1.to_i
        when /\A\((\S+)\.\.(\S+)\)\z/ # Ranges
          RangeLookup.parse($1, $2)
        when /\A(-?\d[\d\.]+)\z/ # Floats
          $1.to_f
        else
          VariableLookup.parse(markup)
        end
      end
    end

  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
locomotivecms-liquid-4.0.0 lib/liquid/expression.rb
liquid-3.0.6 lib/liquid/expression.rb
liquid-3.0.5 lib/liquid/expression.rb
liquid-3.0.4 lib/liquid/expression.rb
liquid-3.0.3 lib/liquid/expression.rb
liquid-3.0.2 lib/liquid/expression.rb
locomotivecms-liquid-4.0.0.alpha2 lib/liquid/expression.rb
locomotivecms-liquid-4.0.0.alpha1 lib/liquid/expression.rb
locomotivecms-liquid-4.0.0.alpha lib/liquid/expression.rb
liquid-3.0.1 lib/liquid/expression.rb
liquid-3.0.0 lib/liquid/expression.rb