js_rake_tasks 0.0.3 → 0.1.0

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.
Files changed (2) hide show
  1. data/lib/js_rake_tasks.rb +26 -5
  2. metadata +72 -9
data/lib/js_rake_tasks.rb CHANGED
@@ -2,14 +2,35 @@ include Rake::DSL if defined?(Rake::DSL)
2
2
 
3
3
  namespace 'coffee' do
4
4
  task "compile", [:flags] do |t,args|
5
+ require 'json'
6
+
7
+ source_code = FileList.new('src/**/*.coffee').map { |file_path| File.read(file_path) }.join("\n")
8
+
5
9
  package_json = JSON.parse(File.read("package.json"))
10
+ uncompressed_output = filter_output(compile_coffee_script(source_code), package_json)
11
+ File.open(file_name(package_json), "w") { |file| file.puts uncompressed_output }
12
+ File.open(file_name(package_json, true), "w") { |file| file.puts uglify(uncompressed_output) }
13
+ end
14
+
15
+ def file_name(package_json, minified = false)
16
+ File.join("dist","#{package_json["name"]}#{minified ? "-min" : ""}.js")
17
+ end
6
18
 
7
- `coffee --compile -j #{package_json["name"]} #{args[:flags]} --output dist/ src/`
19
+ def compile_coffee_script(coffee_script)
20
+ require 'execjs'
21
+ require 'coffee-script'
22
+
23
+ context = ExecJS.compile(File.read(CoffeeScript::Source.bundled_path))
24
+ context.call("CoffeeScript.compile", coffee_script, :bare => false)
25
+ end
26
+
27
+ def filter_output(compiled_output, package_json)
28
+ compiled_output.gsub(/@@VERSION@@/, package_json["version"])
29
+ end
8
30
 
9
- #swap out the version
10
- file_name = File.join("dist","#{package_json["name"]}.js")
11
- filtered = File.read(file_name).gsub(/@@VERSION@@/, package_json["version"])
12
- File.open(file_name, "w") {|file| file.puts filtered}
31
+ def uglify(uncompressed_javascript)
32
+ require 'uglifier'
33
+ Uglifier.compile(uncompressed_javascript)
13
34
  end
14
35
  end
15
36
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: js_rake_tasks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-02-05 00:00:00.000000000Z
12
+ date: 2011-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json_pure
16
- requirement: &769519210 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,31 @@ dependencies:
21
21
  version: 1.6.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *769519210
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.6.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: execjs
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.3.2
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.3.2
25
46
  - !ruby/object:Gem::Dependency
26
47
  name: semver
27
- requirement: &769518980 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
28
49
  none: false
29
50
  requirements:
30
51
  - - ~>
@@ -32,18 +53,60 @@ dependencies:
32
53
  version: 1.0.1
33
54
  type: :runtime
34
55
  prerelease: false
35
- version_requirements: *769518980
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.1
36
62
  - !ruby/object:Gem::Dependency
37
63
  name: git
38
- requirement: &769518750 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.2.5
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
39
73
  none: false
40
74
  requirements:
41
75
  - - ~>
42
76
  - !ruby/object:Gem::Version
43
77
  version: 1.2.5
78
+ - !ruby/object:Gem::Dependency
79
+ name: coffee-script-source
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 1.3.3
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.3.3
94
+ - !ruby/object:Gem::Dependency
95
+ name: uglifier
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 1.2.4
44
102
  type: :runtime
45
103
  prerelease: false
46
- version_requirements: *769518750
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.2.4
47
110
  description: Rake tasks for little JavaScript projects
48
111
  email: searls@gmail.com
49
112
  executables: []
@@ -71,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
134
  version: '0'
72
135
  requirements: []
73
136
  rubyforge_project:
74
- rubygems_version: 1.8.6
137
+ rubygems_version: 1.8.24
75
138
  signing_key:
76
139
  specification_version: 3
77
140
  summary: Provides a few tasks for managing CoffeeScript/JavaScript projects