Sha256: 336695c3fe54916d08d31fd479cf9547bda53cc4d4536d0980fd8bf0d650abee

Contents?: true

Size: 1.42 KB

Versions: 12

Compression:

Stored size: 1.42 KB

Contents

module Liquidscript
  module Generator
    class Javascript
      module Metas

        def generate_exec(code)
          exec = buffer
          exec << _exec_context(code)
          code.codes.inject(exec) do |m, c|
            m << replace(c)
            m
          end
        end

        def generate_set(code)
          case code[1].type
          when :variable
            "#{code[1].name} = #{replace code[2]};"
          when :property
            "#{replace code[1]} = #{replace code[2]};"
          end
        end

        def generate_get(code)
          "#{code[1].name}"
        end

        { :if     => "if(%s)",
          :elsif  => "else if(%s)",
          :unless => "if(!(%s))" }.each do |k, v|

          define_method(:"generate_#{k}") do |code|
            part = buffer
            part << "\n#{v % replace(code[1])} {\n"
            code[2].inject(part) { |m, p| m << replace(p) }
            part << "\n}\n"

            if code[3]
              part << replace(code[3])
            else
              part
            end
          end
        end

        def generate_else(code)
          part = buffer
          part << "\nelse {\n"
          code[1].inject(part) { |m, p| m << replace(p) }
          part << "\n}\n"
        end

        protected

        def _exec_context(code)

          unless code.locals.empty?
            "var #{code.locals.join(',')}; "
          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
liquidscript-0.4.1 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.4.0 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.3.1 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.3.0 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.2.1 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.2.0 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.1.5 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.1.4 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.1.3 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.1.2 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.1.1 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.1.0 lib/liquidscript/generator/javascript/metas.rb