coffee-script 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/coffee_script.rb +55 -22
  2. metadata +4 -4
@@ -1,31 +1,64 @@
1
1
  module CoffeeScript
2
- def self.locate_coffee_bin
3
- out = `which coffee`
4
- if $?.success?
5
- out.chomp
6
- else
7
- raise LoadError, "could not find `coffee` in PATH"
2
+ class << self
3
+ def locate_coffee_bin
4
+ out = `which coffee`
5
+ if $?.success?
6
+ out.chomp
7
+ else
8
+ raise LoadError, "could not find `coffee` in PATH"
9
+ end
8
10
  end
9
- end
10
11
 
11
- def self.coffee_bin
12
- @@coffee_bin ||= locate_coffee_bin
13
- end
12
+ def coffee_bin
13
+ @@coffee_bin ||= locate_coffee_bin
14
+ end
14
15
 
15
- def self.coffee_bin=(path)
16
- @@coffee_bin = path
17
- end
16
+ def coffee_bin=(path)
17
+ @@coffee_bin = path
18
+ end
19
+
20
+ def version
21
+ `#{coffee_bin} --version`[/(\d|\.)+/]
22
+ end
18
23
 
19
- # Compile a script (String or IO) to JavaScript.
20
- def self.compile(script, options = {})
21
- script = script.read if script.respond_to?(:read)
22
- command = "#{coffee_bin} -sp"
23
- command += " --no-wrap" if options[:no_wrap]
24
+ # Compile a script (String or IO) to JavaScript.
25
+ def compile(script, options = {})
26
+ args = "-sp"
24
27
 
25
- IO.popen(command, "w+") do |f|
26
- f << script
27
- f.close_write
28
- f.read
28
+ if options[:wrap] == false ||
29
+ options.key?(:bare) ||
30
+ options.key?(:no_wrap)
31
+ args += " --#{no_wrap_flag}"
32
+ end
33
+
34
+ execute_coffee(script, args)
35
+ end
36
+
37
+ # Evaluate a script (String or IO) and return the stdout.
38
+ # Note: the first argument will be process.argv[3], the second
39
+ # process.argv[4], etc.
40
+ def evaluate(script, *args)
41
+ execute_coffee(script, "-s #{args.join(' ')}")
29
42
  end
43
+
44
+ private
45
+ def execute_coffee(script, args)
46
+ command = "#{coffee_bin} #{args}"
47
+ script = script.read if script.respond_to?(:read)
48
+
49
+ IO.popen(command, "w+") do |f|
50
+ f << script
51
+ f.close_write
52
+ f.read
53
+ end
54
+ end
55
+
56
+ def no_wrap_flag
57
+ if `#{coffee_bin} --help`.lines.grep(/--no-wrap/).any?
58
+ 'no-wrap'
59
+ else
60
+ 'bare'
61
+ end
62
+ end
30
63
  end
31
64
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coffee-script
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
+ - 1
8
9
  - 0
9
- - 0
10
- version: 1.0.0
10
+ version: 1.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeremy Ashkenas
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-09-10 00:00:00 -05:00
19
+ date: 2010-10-29 00:00:00 -05:00
20
20
  default_executable:
21
21
  dependencies: []
22
22