typescript-node 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,10 +8,14 @@ module TypeScript
8
8
  module Node
9
9
 
10
10
  class << self
11
+
12
+ # Compile TypeScript source file.
13
+ # @param [String] source_file TypeScript source file
14
+ # @return [TypeScript::Node::CompileResult] compile result
11
15
  def compile_file(source_file)
12
16
  Dir.mktmpdir do |output_dir|
13
17
  output_file = File.join(output_dir, "out.js")
14
- cmd = ["node", Src.tsc_path, "--out", output_file, source_file]
18
+ cmd = [node, Src.tsc_path, "--out", output_file, source_file]
15
19
  Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thr|
16
20
  exit_status = wait_thr.value
17
21
  output_js = File.exists?(output_file) ? File.read(output_file) : nil
@@ -25,6 +29,9 @@ module TypeScript
25
29
  end
26
30
  end
27
31
 
32
+ # Compile TypeScript to JavaScript.
33
+ # @param [String] source TypeScript to be compiled
34
+ # @return [String] Resulted JavaScript
28
35
  def compile(source)
29
36
  js_file = Tempfile.new(["typescript-node", ".ts"])
30
37
  begin
@@ -40,6 +47,37 @@ module TypeScript
40
47
  js_file.unlink
41
48
  end
42
49
  end
50
+
51
+ # node command
52
+ # TS_NODE environmental variable is used when it is set.
53
+ def node
54
+ ENV["TS_NODE"] || "node"
55
+ end
56
+
57
+ def locate_executable(cmd)
58
+ if RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ && File.extname(cmd) == ""
59
+ cmd << ".exe"
60
+ end
61
+
62
+ if File.executable? cmd
63
+ cmd
64
+ else
65
+ path = ENV['PATH'].split(File::PATH_SEPARATOR).find { |p|
66
+ full_path = File.join(p, cmd)
67
+ File.executable?(full_path) && File.file?(full_path)
68
+ }
69
+ path && File.expand_path(cmd, path)
70
+ end
71
+ end
72
+
73
+ def check_node
74
+ unless locate_executable(self.node)
75
+ raise "typescript-node requires node command, but it's not found. Please install it. " +
76
+ "Set TS_NODE environmental variable If you want to use node command in non-standard path."
77
+ end
78
+ end
43
79
  end
44
80
  end
45
81
  end
82
+
83
+ TypeScript::Node.check_node
@@ -1,5 +1,5 @@
1
1
  module TypeScript
2
2
  module Node
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typescript-node
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -60,7 +60,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
60
60
  version: '0'
61
61
  segments:
62
62
  - 0
63
- hash: 2598547458279437496
63
+ hash: 3347903559548868122
64
64
  required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  version: '0'
70
70
  segments:
71
71
  - 0
72
- hash: 2598547458279437496
72
+ hash: 3347903559548868122
73
73
  requirements: []
74
74
  rubyforge_project:
75
75
  rubygems_version: 1.8.24