Module: TypeScript::Node

Defined in:
lib/typescript-node.rb,
lib/typescript-node/version.rb,
lib/typescript-node/compile_result.rb

Defined Under Namespace

Classes: CompileResult

Constant Summary collapse

VERSION =
"0.0.2"

Class Method Summary collapse

Class Method Details

.compile(source) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/typescript-node.rb', line 28

def compile(source)
  js_file = Tempfile.new(["typescript-node", ".ts"])
  begin
    js_file.write(source)
    js_file.close
    result = compile_file(js_file.path)
    if result.success?
      result.js
    else
      raise result.stderr
    end
  ensure
    js_file.unlink
  end
end

.compile_file(source_file) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/typescript-node.rb', line 11

def compile_file(source_file)
  Dir.mktmpdir do |output_dir|
    output_file = File.join(output_dir, "out.js")
    cmd = ["node", Src.tsc_path, "--out", output_file, source_file]
    Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thr|
      exit_status = wait_thr.value
      output_js = File.exists?(output_file) ? File.read(output_file) : nil
      CompileResult.new(
          output_js,
          exit_status,
          stdout.read,
          stderr.read
      )
    end
  end
end