Module: TypeScript::Ruby
- Defined in:
- lib/tsc-ruby.rb,
lib/tsc-ruby/version.rb,
lib/tsc-ruby/compile_result.rb
Defined Under Namespace
Classes: CompileResult, NodeNotFound
Constant Summary collapse
- VERSION =
'0.1.3'
Class Method Summary collapse
-
.compile(script, *tsc_options) ⇒ String
Compile TypeScript string to JavaScript string.
-
.compile_file(input_file_path, *tsc_options) ⇒ TypeScript::Ruby::CompileResult
Compile TypeScript script file to JavaScript script file.
- .tsc(*args) ⇒ Object
- .tsc_version ⇒ Object
Class Method Details
.compile(script, *tsc_options) ⇒ String
Compile TypeScript string to JavaScript string
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/tsc-ruby.rb', line 30 def compile(script, *) script = script.read if script.respond_to?(:read) input_file = Tempfile.new(%w(tsc-ruby .ts)) begin input_file.write(script) input_file.close result = compile_file(input_file.path, *) if result.success? result.js else raise result.stderr + result.stdout end ensure input_file.unlink end end |
.compile_file(input_file_path, *tsc_options) ⇒ TypeScript::Ruby::CompileResult
Compile TypeScript script file to JavaScript script file.
Compilation is a one to one process, not implicit concatenation of referenced dependencies is performed.
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/tsc-ruby.rb', line 53 def compile_file(input_file_path, *) Dir.mktmpdir do |output_dir| stdout, stderr, exit_status = tsc(*, '--outDir', output_dir, input_file_path) # now input file is in output_dir but with a .js extension output_file_path = File.join(output_dir, File.basename(input_file_path, '.ts')) + '.js' raise "Compiled JS file not found: #{output_file_path}" unless File.exist? output_file_path output_js = File.read(output_file_path) CompileResult.new(output_js, exit_status, stdout, stderr) end end |
.tsc(*args) ⇒ Object
19 20 21 22 23 24 |
# File 'lib/tsc-ruby.rb', line 19 def tsc(*args) cmd = ['node', TypeScript::Src.tsc_path.to_s, *args] Open3.capture3(*cmd) rescue Errno::ENOENT => e raise '`node` executable not found in PATH' if e. == 'No such file or directory - node' end |
.tsc_version ⇒ Object
15 16 17 |
# File 'lib/tsc-ruby.rb', line 15 def tsc_version TypeScript::Src.version end |