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.6.2'
Class Method Summary collapse
- .check_node ⇒ Object
-
.compile(source, *tsc_options) ⇒ String
Compile TypeScript to JavaScript.
-
.compile_file(source_file, *tsc_options) ⇒ 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(*args) ⇒ Object
- .tsc_version ⇒ Object
Class Method Details
.check_node ⇒ Object
80 81 82 83 84 |
# File 'lib/typescript-node.rb', line 80 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, *tsc_options) ⇒ String
Compile TypeScript to JavaScript.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/typescript-node.rb', line 42 def compile(source, *) js_file = Tempfile.new(%w(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 + result.stdout end ensure js_file.unlink end end |
.compile_file(source_file, *tsc_options) ⇒ TypeScript::Node::CompileResult
Compile TypeScript source file.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/typescript-node.rb', line 24 def compile_file(source_file, *) Dir.mktmpdir do |output_dir| output_file = File.join(output_dir, 'out.js') stdout, stderr, exit_status = tsc(*, '--out', output_file, source_file) output_js = File.exist?(output_file) ? File.read(output_file) : nil CompileResult.new( output_js, exit_status, stdout, stderr, ) end end |
.locate_executable(cmd) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/typescript-node.rb', line 64 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.
60 61 62 |
# File 'lib/typescript-node.rb', line 60 def node ENV['TS_NODE'] || 'node' end |
.tsc(*args) ⇒ Object
16 17 18 19 |
# File 'lib/typescript-node.rb', line 16 def tsc(*args) cmd = [node, Src.tsc_path.to_s, *args] Open3.capture3(*cmd) end |
.tsc_version ⇒ Object
12 13 14 |
# File 'lib/typescript-node.rb', line 12 def tsc_version TypeScript::Src.version end |