Class: JavascriptQueryHook

Inherits:
Mumukit::Templates::FileHook
  • Object
show all
Defined in:
lib/query_hook.rb

Constant Summary collapse

VAR_REGEXP =
/^ *(?:var|let) +([a-zA-Z_$][a-zA-Z_$0-9]*)/
VAR_ASSIGN_REGEXP =
/^ *(?:var|let) +([a-zA-Z_$][a-zA-Z_$0-9]*) *=/
CONST_ASSIGN_REGEXP =
/^ *const +([a-zA-Z_$][a-zA-Z_$0-9]*) *=/

Instance Method Summary collapse

Instance Method Details

#command_line(filename) ⇒ Object



49
50
51
# File 'lib/query_hook.rb', line 49

def command_line(filename)
  "node #{filename}"
end


43
44
45
46
47
# File 'lib/query_hook.rb', line 43

def compile_cookie(cookie)
  return if cookie.blank?

  compile_statements(cookie).join "\n"
end

#compile_file_content(r) ⇒ Object



13
14
15
# File 'lib/query_hook.rb', line 13

def compile_file_content(r)
  "#{compile_file_header(r)}\n#{compile_query(r.query)}"
end

#compile_file_header(r) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/query_hook.rb', line 17

def compile_file_header(r)
<<javascript
'use strict';

function mumukiConsolePrettyPrint(e) {
  if (e instanceof Function) return '<function>';
  const json = JSON.stringify(e);
  return json && json.replace(/"(\\w+)"\s*:/g, '$1:');
 }

#{r.extra}

#{r.content}

#{compile_cookie(r.cookie)}
javascript
end

#compile_query(query, output_prefix = "=> ", output_var = "__mumuki_query_result__") ⇒ Object



35
36
37
38
39
40
41
# File 'lib/query_hook.rb', line 35

def compile_query(query, output_prefix = "=> ", output_var = "__mumuki_query_result__")
  if ['var', 'let', 'const'].any? { |type| query.start_with? "#{type} " }
    "#{query}\nconsole.log('#{output_prefix}undefined')"
  else
    "var #{output_var} = #{query};\nconsole.log('#{output_prefix}' + mumukiConsolePrettyPrint(#{output_var}))"
  end
end

#tempfile_extensionObject



9
10
11
# File 'lib/query_hook.rb', line 9

def tempfile_extension
  '.js'
end