Sha256: 40c700b608625db97756f577739a31f23833ec310592727378a5dca2d19d4c90

Contents?: true

Size: 1.54 KB

Versions: 9

Compression:

Stored size: 1.54 KB

Contents

module Liquidscript
  module Generator
    class Javascript
      module Metas

        def generate_exec(code)
          exec = buffer
          exec << _exec_context(code)
          insert_into(code.codes, exec)
        end

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

          end
        end

        def generate_access(code)
          "#{replace code[1]}[#{replace code[2]}]"
        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 << "#{v % replace(code[1])} {\n"
            indent!
            insert_into(code[2], part)
            unindent!
            part << indent_level << "}"

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

        def generate_else(code)
          part = buffer
          part << " else {\n"
          indent!
          insert_into(code[1], part)
          unindent!
          part << indent_level << "}"
        end

        protected

        def _exec_context(code)

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

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
liquidscript-0.10.4 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.10.3 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.10.2 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.10.1 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.10.0 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.9.2 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.9.1 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.9.0 lib/liquidscript/generator/javascript/metas.rb
liquidscript-0.8.2 lib/liquidscript/generator/javascript/metas.rb