Sha256: 71cea8125167184b704aca12522e1aec78050e76a640aefcbb34d2cbff608a5a

Contents?: true

Size: 1.69 KB

Versions: 6

Compression:

Stored size: 1.69 KB

Contents

module Liquidscript
  module Generator
    class Javascript < Base
      module Literals

        BINOP_SWITCH = {
          "==" => "===",
          "===" => "==",
          "!=" => "!==",
          "!==" => "!=",
          "or" => "||",
          "and" => "&&"
        }.freeze

        def generate_number(code)

          "#{code.first}"
        end

        def generate_dstring(code)

          "\"#{code.first.gsub("\n", "\\n")}\""
        end

        def generate_sstring(code)

          "'#{code.first.gsub(/'/, "\\'")}'"
        end

        def generate_unop(code)
          " #{code[1].value} #{replace(code[2])}"
        end

        def generate_binop(code)
          op = BINOP_SWITCH.fetch(code[1].value) do
            code[1].value
          end

          " #{replace(code[2])} #{op} #{replace(code[3])}"
        end

        def generate_keyword(code)
          " #{code[1].value} "
        end

        def generate_object(code)

          object = buffer
          object.set_join! ', '

          code[1].inject(object) do |buf, part|
            buf << "\"#{part[0].value}\": #{replace(part[1])}"
          end

          "{#{object}}"
        end

        def generate_array(code)

          array = buffer
          array.set_join! ', '

          code[1].inject(array) do |a, p|
            a << replace(p)
          end

          "[#{array}]"
        end

        def generate_function(code)

          function = buffer

          function                       <<
            "function("                  <<
            code[1].parameters.join(',') <<
            ') {'                        <<
            replace(code[1])             <<
            '}'
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
liquidscript-0.1.5 lib/liquidscript/generator/javascript/literals.rb
liquidscript-0.1.4 lib/liquidscript/generator/javascript/literals.rb
liquidscript-0.1.3 lib/liquidscript/generator/javascript/literals.rb
liquidscript-0.1.2 lib/liquidscript/generator/javascript/literals.rb
liquidscript-0.1.1 lib/liquidscript/generator/javascript/literals.rb
liquidscript-0.1.0 lib/liquidscript/generator/javascript/literals.rb