Module: Liquidscript::Generator::Javascript::Literals

Included in:
Liquidscript::Generator::Javascript
Defined in:
lib/liquidscript/generator/javascript/literals.rb

Constant Summary collapse

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

Instance Method Summary collapse

Instance Method Details

#generate_array(code) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
# File 'lib/liquidscript/generator/javascript/literals.rb', line 74

def generate_array(code)

  array = buffer
  array.set_join! ', '

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

  "[#{array}]"
end

#generate_binop(code) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/liquidscript/generator/javascript/literals.rb', line 50

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

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

#generate_function(code) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
# File 'lib/liquidscript/generator/javascript/literals.rb', line 90

def generate_function(code)

  function = buffer

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

#generate_interop(code) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/liquidscript/generator/javascript/literals.rb', line 24

def generate_interop(code)
  content = code[1..-1]
  buf = buffer
  buf.set_join! ','

  content.each do |part|
    case part.type
    when :istring_begin, :istring
      buf << "\"#{part.value}\""
    else
      buf << "#{replace(part)}"
    end
  end

  "[#{buf}].join('')"
end

#generate_istring(code) ⇒ Object



20
21
22
# File 'lib/liquidscript/generator/javascript/literals.rb', line 20

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

#generate_keyword(code) ⇒ Object



58
59
60
# File 'lib/liquidscript/generator/javascript/literals.rb', line 58

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

#generate_newline(_) ⇒ Object



86
87
88
# File 'lib/liquidscript/generator/javascript/literals.rb', line 86

def generate_newline(_)
  "\n"
end

#generate_number(code) ⇒ Object



15
16
17
18
# File 'lib/liquidscript/generator/javascript/literals.rb', line 15

def generate_number(code)

  "#{code.first}"
end

#generate_object(code) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/liquidscript/generator/javascript/literals.rb', line 62

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

#generate_sstring(code) ⇒ Object



41
42
43
44
# File 'lib/liquidscript/generator/javascript/literals.rb', line 41

def generate_sstring(code)

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

#generate_unop(code) ⇒ Object



46
47
48
# File 'lib/liquidscript/generator/javascript/literals.rb', line 46

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