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 =
'1.0.0'
Class Method Summary collapse
- .check_node ⇒ Object
-
.compile(source) ⇒ String
Compile TypeScript to JavaScript.
-
.compile_file(source_file) ⇒ TypeScript::Node::CompileResult
Compile TypeScript source file.
- .locate_executable(cmd) ⇒ Object
-
.node ⇒ Object
node command TS_NODE environmental variable is used when it is set.
- .tsc_version ⇒ Object
Class Method Details
.check_node ⇒ Object
77 78 79 80 81 82 |
# File 'lib/typescript-node.rb', line 77 def check_node unless locate_executable(node) raise "typescript-node requires node command, but it's not found. Please install it. " + "Set TS_NODE environmental variable If you want to use node command in non-standard path." end end |
.compile(source) ⇒ String
Compile TypeScript to JavaScript.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/typescript-node.rb', line 39 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) ⇒ TypeScript::Node::CompileResult
Compile TypeScript source file.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/typescript-node.rb', line 19 def compile_file(source_file) Dir.mktmpdir do |output_dir| output_file = File.join(output_dir, "out.js") cmd = [node, Src.tsc_path.to_s, "--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 |
.locate_executable(cmd) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/typescript-node.rb', line 61 def locate_executable(cmd) if RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ && File.extname(cmd) == "" cmd << ".exe" end if File.executable? cmd cmd else path = ENV['PATH'].split(File::PATH_SEPARATOR).find { |p| full_path = File.join(p, cmd) File.executable?(full_path) && File.file?(full_path) } path && File.(cmd, path) end end |
.node ⇒ Object
node command TS_NODE environmental variable is used when it is set.
57 58 59 |
# File 'lib/typescript-node.rb', line 57 def node ENV["TS_NODE"] || "node" end |
.tsc_version ⇒ Object
12 13 14 |
# File 'lib/typescript-node.rb', line 12 def tsc_version TypeScript::Src.version end |