Sha256: a28ac86fd37d88b2100356d68a92e550afa293b4e8c2331abe1642baeb102319

Contents?: true

Size: 941 Bytes

Versions: 6

Compression:

Stored size: 941 Bytes

Contents

module Liquidscript
  module Compiler
    class ICR < Base
      module Functions

        def compile_property(prop)
          shift :prop

          property = action do |ident|
            code :property, prop, (ident.value || ident.type)
          end

          # Just in case there is a property named 'class' or 'module'
          v = expect [:identifier, :class, :module] => property

          v
        end

        def compile_access(body)
          shift :lbrack
          key = compile_vexpression
          shift :rbrack

          v = code :access, body, key

          v
        end

        def compile_call(subject)
          shift :lparen

          if subject.type == :identifier
            ref(subject)
          end

          arguments = collect_compiles :expression, :rparen,
            :comma => action.shift

          call = code :call, subject, *arguments
          call
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
liquidscript-0.7.12 lib/liquidscript/compiler/icr/functions.rb
liquidscript-0.7.11 lib/liquidscript/compiler/icr/functions.rb
liquidscript-0.7.10 lib/liquidscript/compiler/icr/functions.rb
liquidscript-0.7.9 lib/liquidscript/compiler/icr/functions.rb
liquidscript-0.7.8 lib/liquidscript/compiler/icr/functions.rb
liquidscript-0.7.7 lib/liquidscript/compiler/icr/functions.rb