Skip to content

Commit 1657954

Browse files
committed
Compiles coffeescripts
1 parent cecc8e5 commit 1657954

8 files changed

+63
-15
lines changed

lib/file.coffee

+21-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
path = require 'path'
55
fs = require 'fs'
66
jshint = require("../node_modules/jshint").JSHINT
7+
coffee = require "../node_modules/coffee-script"
78
readyReporter = require './reporter'
89

910
# ## Events
@@ -18,10 +19,8 @@ r =
1819
# });
1920
analyze : (file, options, callback)->
2021
# Load it in a string
21-
fs.readFile file, (err, code)->
22+
r.readFileForceJs file, (err, code)->
2223
return callback err if err?
23-
24-
code = code.toString()
2524

2625
# Call jshint if should analyze code
2726
analyze = options.analyze ? true
@@ -32,6 +31,25 @@ r =
3231
return callback(readyReporter.reporter(file, jshint.errors)) unless jshintOk
3332

3433
callback()
34+
35+
isCoffee : (file)->
36+
path.extname(file).toLowerCase() is '.coffee'
37+
38+
# ## readJsFile
39+
#
40+
# Return the code from a js or coffee file and return js
41+
readFileForceJs : (file, callback)->
42+
fs.readFile file, (err, code)->
43+
return callback err if err?
44+
45+
code = code.toString()
46+
47+
try
48+
code = coffee.compile(code) if r.isCoffee(file)
49+
catch error
50+
return callback error
51+
52+
callback null, code
3553

3654
r[k] = func for k, func of require('events').EventEmitter.prototype
3755

lib/index.coffee

+16-7
Original file line numberDiff line numberDiff line change
@@ -67,25 +67,34 @@ r =
6767

6868
# If there are no files, throw an error
6969
return callback('There are no files to readyjsize') if allFiles.length == 0
70+
71+
r.uglifyBatch allFiles, callback
7072

73+
###
7174
# If there is a listener for 'file.uglify', uglify each file individually
7275
if r.listeners('file.uglify').length > 0
7376
async.forEach allFiles, r.uglifyFile, ->
7477
r.uglifyBatch allFiles, callback
7578
else
76-
r.uglifyBatch allFiles, callback
77-
79+
r.uglifyBatch allFiles, callback
80+
###
7881

7982
uglifyBatch: (files, callback)->
80-
min = minify files
81-
callback null, min.code
83+
# Read js code for each file
84+
async.map files, file.readFileForceJs, (err, codes)->
85+
return callback(err) if err?
86+
87+
# Uglify the code
88+
minified_codes = codes.map (code)->
89+
min = minify code, fromString:true
90+
min.code
91+
92+
callback null, minified_codes.join("\n")
8293

8394
uglifyFile: (filename, callback)->
8495
minified = minify filename
8596
r.emit 'file.uglify', filename, minified
86-
callback null, minified
87-
88-
97+
callback null, minified
8998

9099
r[k] = func for k, func of require('events').EventEmitter.prototype
91100

lib/listfiles.coffee

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ r =
7474

7575
# ## filterFilename(name)
7676
filterFilename: (name, options)->
77-
keep = minimatch(name, '*.js')
77+
keep = minimatch(name, '*.{js,coffee}')
7878
ignore = r.ignoreFile(name, options)
7979
keep and not ignore
8080

package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,17 @@
3434
"optimist": "~0.3.1",
3535
"colors": "~0.6.0",
3636
"uglify-js": "~2.2.2",
37-
"jshint": "~0.9.1",
37+
"jshint": "~2.1.11",
3838
"underscore": "~1.4.3",
3939
"async": "~0.1.22",
4040
"readdirp": ">= 0.2.2",
4141
"minimatch": "~0.2.9",
42-
"fs-extra": "~0.6.0"
42+
"fs-extra": "~0.6.0",
43+
"coffee-script": "~1.6.3"
4344
},
4445
"devDependencies": {
4546
"mocha": "latest",
46-
"should": "latest",
47-
"coffee-script": "latest"
47+
"should": "latest"
4848
},
4949
"engines": {
5050
"node": ">=0.4.0"

tests/coffeescript/index.coffee

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
var1 = 1
2+
3+
f = ->
4+
var1

tests/coffeescript/index2.coffee

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
index2 = 'working'
2+
3+
alert index2

tests/index.coffee

+7
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,10 @@ describe 'Ready.js', ->
149149
it 'can load a json for options', (done)->
150150
done()
151151
#cli.execute 'tests/simple'
152+
153+
it "compile coffeescripts", (done)->
154+
compile 'tests/coffeescript', {output:'./tests/minified'}, done, (err, minified)->
155+
should.not.exist err
156+
minified.should.exists
157+
minified.should.match /"working"/
158+
done()

tests/listfiles.coffee

+7
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ describe 'List files,', ->
2222
should.exist files
2323
files.length.should.equal 2
2424
done()
25+
26+
it 'returns coffeescript', (done)->
27+
listFiles.sourceToFiles './tests/coffeescript', (err, files)->
28+
should.not.exist err
29+
files.length.should.equal 2
30+
files[0].should.include "index.coffee"
31+
done()
2532

2633
describe 'sourceS to file', ->
2734
it 'works with a single file', (done)->

0 commit comments

Comments
 (0)