jsc 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +2 -0
- data/README.rdoc +18 -12
- data/VERSION +1 -1
- data/bin/jsc +19 -6
- data/features/run_command.feature +1 -1
- data/lib/jsc.rb +1 -1
- data/lib/jsc/closure_compiler.rb +36 -13
- data/spec/jsc_spec.rb +34 -1
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
== 0.2.2 / 2010-02-27
|
2
|
+
|
2
3
|
added support for different types of formatters with a new parser module
|
3
4
|
added --flymake option to return a flymake compatible output
|
4
5
|
|
5
6
|
== 0.2.1 / 2010-02-25
|
7
|
+
|
6
8
|
FIX: user ActiveSupport JSON decoding (JSON.parse fail randomly)
|
7
9
|
moved from bones to jeweler
|
8
10
|
term/ansicolor module configured as Mixin for strings
|
data/README.rdoc
CHANGED
@@ -10,18 +10,19 @@ Ruby API to Google Closure Compiler Web service.
|
|
10
10
|
|
11
11
|
With <b>jsc</b> you can compile your JavaScript code throught {Google Closure Compiler REST service}[http://code.google.com/closure/compiler/].
|
12
12
|
|
13
|
-
The package comes with a jsc
|
13
|
+
The package comes with a jsc command which accepts several options, run:
|
14
14
|
|
15
15
|
jsc --help
|
16
16
|
|
17
17
|
for help.
|
18
18
|
|
19
19
|
More in details:
|
20
|
-
* Ruby API actually is a single function call
|
20
|
+
* Ruby API actually is a single function call, JSCompiler.compile()
|
21
21
|
* Handling of JSON responses, parse and print them (same output of the Google web interface!)
|
22
22
|
* Handling of Server Errors responses
|
23
|
-
* Compile a
|
23
|
+
* Compile a file or a piece of code
|
24
24
|
* <b>Emacs snippet</b> to compile code your code for errors and warnings
|
25
|
+
* flymake compatible
|
25
26
|
|
26
27
|
Check {Google API Reference}[http://code.google.com/intl/it-IT/closure/compiler/docs/api-ref.html] for more info about accepted parameters.
|
27
28
|
|
@@ -47,13 +48,24 @@ Compile a piece of code, check for errors:
|
|
47
48
|
|
48
49
|
jsc -e -c "function("
|
49
50
|
|
50
|
-
Compile a file
|
51
|
+
Compile a file for both errors and warnings:
|
51
52
|
|
52
53
|
jsc js/compiled_code.js -a
|
53
54
|
|
54
|
-
==
|
55
|
+
== Install
|
56
|
+
|
57
|
+
If you have gemcutter in your gem sources, run:
|
58
|
+
|
59
|
+
[sudo] gem install jsc
|
60
|
+
|
61
|
+
== Emacs+flymake+jsc
|
62
|
+
|
63
|
+
For GNU Emacs users, jsc provides a {flymake}[http://www.emacswiki.org/emacs/FlyMake] compatible output. So you can use jsc+flymake to have a syntax check tool running in the background while editing your javascript files.
|
64
|
+
Look at the {wiki page}[http://wiki.github.com/sub/jsc/flymake] for more info.
|
65
|
+
|
66
|
+
== Emacs snippet
|
55
67
|
|
56
|
-
|
68
|
+
Do you want to compile your code right from Emacs?
|
57
69
|
|
58
70
|
Copy
|
59
71
|
|
@@ -65,12 +77,6 @@ Now, select the code to compile and run:
|
|
65
77
|
* <em>CcJe</em> to check for errors
|
66
78
|
* <em>CcJw</em> to check for warnings.
|
67
79
|
|
68
|
-
== Install
|
69
|
-
|
70
|
-
If you have gemcutter in your gem sources, run:
|
71
|
-
|
72
|
-
[sudo] gem install jsc
|
73
|
-
|
74
80
|
== Copyright
|
75
81
|
|
76
82
|
Copyright (c) 2010 Davide Saurino. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
data/bin/jsc
CHANGED
@@ -30,7 +30,10 @@ jsc [options] ... ARG
|
|
30
30
|
get statistics for compiled code
|
31
31
|
|
32
32
|
--all, -a:
|
33
|
-
execute
|
33
|
+
execute error and warnings check for this code
|
34
|
+
|
35
|
+
--cleancode:
|
36
|
+
returns compiled code if no errors or warnings are found
|
34
37
|
|
35
38
|
--level value, -l value:
|
36
39
|
compile with level value
|
@@ -51,12 +54,12 @@ jsc [options] ... ARG
|
|
51
54
|
|
52
55
|
ARG: A path to a javascript file or the code that will be compiled.
|
53
56
|
|
54
|
-
|
57
|
+
You can use only ONE of the following options
|
55
58
|
|
56
|
-
-e, -w, -s, -a
|
59
|
+
-e, -w, -s, -a, --cleancode
|
57
60
|
|
58
|
-
the
|
59
|
-
it will return the compiled code
|
61
|
+
If none is specified then the code will be first compiled for errors
|
62
|
+
and only if no errors are found it will return the compiled code.
|
60
63
|
EOU
|
61
64
|
|
62
65
|
opts = GetoptLong.new(
|
@@ -67,6 +70,7 @@ opts = GetoptLong.new(
|
|
67
70
|
[ '--warns', '-w', GetoptLong::NO_ARGUMENT ],
|
68
71
|
[ '--stats', '-s', GetoptLong::NO_ARGUMENT ],
|
69
72
|
[ '--all', '-a', GetoptLong::NO_ARGUMENT ],
|
73
|
+
[ '--cleancode', GetoptLong::NO_ARGUMENT ],
|
70
74
|
[ '--level','-l', GetoptLong::REQUIRED_ARGUMENT ],
|
71
75
|
[ '--debug', GetoptLong::NO_ARGUMENT ],
|
72
76
|
[ '--flymake','-f', GetoptLong::NO_ARGUMENT ]
|
@@ -102,6 +106,8 @@ opts.each do |opt, arg|
|
|
102
106
|
output_info = "statistics"
|
103
107
|
when '--all'
|
104
108
|
output_info = "all"
|
109
|
+
when '--cleancode'
|
110
|
+
output_info = "clean"
|
105
111
|
when '--flymake'
|
106
112
|
type = "flymake"
|
107
113
|
end
|
@@ -116,8 +122,14 @@ end
|
|
116
122
|
arg = code.blank? ? ARGV.shift : code
|
117
123
|
|
118
124
|
if output_info.eql?("all")
|
119
|
-
|
125
|
+
full_compile_log = JSCompiler.full_compile(arg, file, level, type)
|
126
|
+
puts full_compile_log unless full_compile_log.blank?
|
127
|
+
elsif output_info.eql?("clean")
|
128
|
+
clean_compile_log = JSCompiler.cleancode(arg, file, level, type)
|
129
|
+
puts clean_compile_log unless clean_compile_log.blank?
|
120
130
|
elsif output_info.blank?
|
131
|
+
# I'm here if none of -e,-w,-a,-s is specified so
|
132
|
+
# I compile only for errors and, if not, for compiled_code
|
121
133
|
errors_output = JSCompiler.compile(arg, file, "errors", level, type)
|
122
134
|
unless errors_output.eql?("No errors")
|
123
135
|
puts errors_output
|
@@ -125,5 +137,6 @@ elsif output_info.blank?
|
|
125
137
|
puts JSCompiler.compile(arg, file, "", level, type)
|
126
138
|
end
|
127
139
|
else
|
140
|
+
# Some option is specified, I pass that to compile()
|
128
141
|
puts JSCompiler.compile(arg, file, output_info, level, type)
|
129
142
|
end
|
data/lib/jsc.rb
CHANGED
data/lib/jsc/closure_compiler.rb
CHANGED
@@ -108,29 +108,52 @@ module JSCompiler
|
|
108
108
|
# * <b>file</b>: 0 => arg is code
|
109
109
|
# 1 => arg is a file path
|
110
110
|
# * <b>level</b>: compilation_level parameter
|
111
|
-
def
|
112
|
-
['errors', 'warnings','compiled_code'].each do |x|
|
111
|
+
def cleancode(arg, file, level, type)
|
112
|
+
['errors', 'warnings', 'compiled_code'].each do |x|
|
113
113
|
str = JSCompiler.compile(arg, file, x, level, type)
|
114
114
|
return str unless str.eql?("No " + x)
|
115
115
|
end
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
|
+
# Compiles a file or a piece of code for
|
119
|
+
# errors or warnings. Returns nothing if no
|
120
|
+
# errors or warnings are found
|
121
|
+
#
|
122
|
+
# Accepted parameters:
|
123
|
+
# * <b>arg</b>: the code or the file path to compile
|
124
|
+
# * <b>file</b>: 0 => arg is code
|
125
|
+
# 1 => arg is a file path
|
126
|
+
# * <b>level</b>: compilation_level parameter
|
127
|
+
def full_compile(arg, file, level, type)
|
128
|
+
errors_log = compile(arg, file, "errors", level, type)
|
129
|
+
str = ""
|
130
|
+
if errors_log.eql?("No errors")
|
131
|
+
warnings_log = compile(arg, file, "warnings", level, type)
|
132
|
+
str = warnings_log unless warnings_log.eql?("No warnings")
|
133
|
+
else
|
134
|
+
str = errors_log
|
135
|
+
end
|
136
|
+
|
137
|
+
str
|
138
|
+
|
139
|
+
end
|
140
|
+
|
118
141
|
# Calls compile method for every file in <em>dir</em> directory
|
119
142
|
#
|
120
143
|
# Accepted parameters:
|
121
144
|
# * <b>dir</b>: the directory
|
122
145
|
# * <b>op</b>: output_info parameter
|
123
146
|
# * <b>level</b>: compilation_level parameter
|
124
|
-
def compile_dir(dir, op, level)
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
end
|
147
|
+
# def compile_dir(dir, op, level)
|
148
|
+
# out = ""
|
149
|
+
# Dir.entries(dir).each do |file|
|
150
|
+
# if File.extname(file) == ".js"
|
151
|
+
# out << "Statistics for file #{file}...\n"
|
152
|
+
# out << compile(file, true, op, level) + "\n***************\n"
|
153
|
+
# end
|
154
|
+
# end
|
155
|
+
# return out
|
156
|
+
# end
|
134
157
|
|
135
158
|
# Parses and returns JSON server <em>response</em>
|
136
159
|
#
|
data/spec/jsc_spec.rb
CHANGED
@@ -128,7 +128,40 @@ describe JSCompiler do
|
|
128
128
|
end
|
129
129
|
|
130
130
|
it 'should receive the compiled code' do
|
131
|
-
@resp.
|
131
|
+
@resp.should match("")
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
describe 'and get errors' do
|
136
|
+
before do
|
137
|
+
@resp = JSCompiler.full_compile(ERROR_CODE, false, "SIMPLE_OPTIMIZATIONS", "")
|
138
|
+
end
|
139
|
+
|
140
|
+
it 'should return the result string' do
|
141
|
+
@resp.should match(/Error n./)
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
describe 'and get warnings' do
|
146
|
+
before do
|
147
|
+
@resp = JSCompiler.full_compile(WARNING_CODE, false, "SIMPLE_OPTIMIZATIONS", "")
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'should return the result string' do
|
151
|
+
@resp.should match(/Warning n./)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
describe 'CLEAN code compile' do
|
158
|
+
describe 'without errors or warnings' do
|
159
|
+
before do
|
160
|
+
@resp = JSCompiler.full_compile(COMPILE_CODE, false, "SIMPLE_OPTIMIZATIONS", "")
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'should receive the compiled code' do
|
164
|
+
@resp.should be_nil
|
132
165
|
end
|
133
166
|
end
|
134
167
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 3
|
9
|
+
version: 0.2.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Davide Saurino
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-03-03 00:00:00 +01:00
|
18
18
|
default_executable: jsc
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|