jsc 0.2.0 → 0.2.1

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.
@@ -0,0 +1,649 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: JSCompiler</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">JSCompiler</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/jsc/closure_compiler_rb.html">
59
+ lib/jsc/closure_compiler.rb
60
+ </a>
61
+ <br />
62
+ <a href="../files/lib/jsc_rb.html">
63
+ lib/jsc.rb
64
+ </a>
65
+ <br />
66
+ </td>
67
+ </tr>
68
+
69
+ </table>
70
+ </div>
71
+ <!-- banner header -->
72
+
73
+ <div id="bodyContent">
74
+
75
+
76
+
77
+ <div id="contextContent">
78
+
79
+
80
+
81
+ </div>
82
+
83
+ <div id="method-list">
84
+ <h3 class="section-bar">Methods</h3>
85
+
86
+ <div class="name-list">
87
+ <a href="#M000003">compile</a>&nbsp;&nbsp;
88
+ <a href="#M000005">compile_dir</a>&nbsp;&nbsp;
89
+ <a href="#M000001">create_json_request</a>&nbsp;&nbsp;
90
+ <a href="#M000008">create_statistics_output</a>&nbsp;&nbsp;
91
+ <a href="#M000004">full_compile</a>&nbsp;&nbsp;
92
+ <a href="#M000010">libpath</a>&nbsp;&nbsp;
93
+ <a href="#M000006">parse_json_output</a>&nbsp;&nbsp;
94
+ <a href="#M000011">path</a>&nbsp;&nbsp;
95
+ <a href="#M000002">post_to_cc</a>&nbsp;&nbsp;
96
+ <a href="#M000007">read_file</a>&nbsp;&nbsp;
97
+ <a href="#M000012">require_all_libs_relative_to</a>&nbsp;&nbsp;
98
+ <a href="#M000009">version</a>&nbsp;&nbsp;
99
+ </div>
100
+ </div>
101
+
102
+ </div>
103
+
104
+
105
+ <!-- if includes -->
106
+
107
+ <div id="section">
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+ <!-- if method_list -->
117
+ <div id="methods">
118
+ <h3 class="section-bar">Public Class methods</h3>
119
+
120
+ <div id="method-M000003" class="method-detail">
121
+ <a name="M000003"></a>
122
+
123
+ <div class="method-heading">
124
+ <a href="#M000003" class="method-signature">
125
+ <span class="method-name">compile</span><span class="method-args">(arg, is_file, op, level)</span>
126
+ </a>
127
+ </div>
128
+
129
+ <div class="method-description">
130
+ <p>
131
+ Compiles a file or a piece of code and returns parsed output
132
+ </p>
133
+ <p>
134
+ Accepted parameters:
135
+ </p>
136
+ <ul>
137
+ <li><b>arg</b>: the code or the file <a href="JSCompiler.html#M000011">path</a>
138
+ to <a href="JSCompiler.html#M000003">compile</a>
139
+
140
+ </li>
141
+ <li><b>is_file</b>: 0 =&gt; arg is code
142
+
143
+ <pre>
144
+ 1 =&gt; arg is a file path
145
+ </pre>
146
+ </li>
147
+ <li><b>op</b>: output_info parameter
148
+
149
+ </li>
150
+ <li><b>level</b>: compilation_level parameter
151
+
152
+ </li>
153
+ </ul>
154
+ <p><a class="source-toggle" href="#"
155
+ onclick="toggleCode('M000003-source');return false;">[Source]</a></p>
156
+ <div class="method-source-code" id="M000003-source">
157
+ <pre>
158
+ <span class="ruby-comment cmt"># File lib/jsc/closure_compiler.rb, line 68</span>
159
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">compile</span>(<span class="ruby-identifier">arg</span>, <span class="ruby-identifier">is_file</span>, <span class="ruby-identifier">op</span>, <span class="ruby-identifier">level</span>)
160
+ <span class="ruby-ivar">@op</span> = <span class="ruby-identifier">op</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">? </span><span class="ruby-constant">DEFAULT_SERVICE</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">op</span>
161
+ <span class="ruby-ivar">@level</span> = <span class="ruby-identifier">level</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">? </span><span class="ruby-constant">DEFAULT_LEVEL</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">level</span>
162
+ <span class="ruby-identifier">value</span> = <span class="ruby-keyword kw">true</span>
163
+
164
+ <span class="ruby-keyword kw">begin</span>
165
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">is_file</span>
166
+ <span class="ruby-identifier">js_code</span> = <span class="ruby-identifier">read_file</span>(<span class="ruby-identifier">arg</span>)
167
+ <span class="ruby-keyword kw">else</span>
168
+ <span class="ruby-identifier">js_code</span> = <span class="ruby-identifier">arg</span>
169
+ <span class="ruby-keyword kw">end</span>
170
+ <span class="ruby-identifier">resp</span>, <span class="ruby-identifier">data</span> = <span class="ruby-identifier">post_to_cc</span>(<span class="ruby-identifier">create_json_request</span>(<span class="ruby-identifier">js_code</span>))
171
+
172
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$debug</span>
173
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;#DEBUG data \n&quot;</span>
174
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">data</span>
175
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\n&quot;</span>
176
+ <span class="ruby-keyword kw">end</span>
177
+
178
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
179
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">e</span>
180
+ <span class="ruby-keyword kw">end</span>
181
+
182
+ <span class="ruby-identifier">parse_json_output</span>(<span class="ruby-identifier">data</span>)
183
+ <span class="ruby-keyword kw">end</span>
184
+ </pre>
185
+ </div>
186
+ </div>
187
+ </div>
188
+
189
+ <div id="method-M000005" class="method-detail">
190
+ <a name="M000005"></a>
191
+
192
+ <div class="method-heading">
193
+ <a href="#M000005" class="method-signature">
194
+ <span class="method-name">compile_dir</span><span class="method-args">(dir, op, level)</span>
195
+ </a>
196
+ </div>
197
+
198
+ <div class="method-description">
199
+ <p>
200
+ Calls <a href="JSCompiler.html#M000003">compile</a> method for every file
201
+ in <em>dir</em> directory
202
+ </p>
203
+ <p>
204
+ Accepted parameters:
205
+ </p>
206
+ <ul>
207
+ <li><b>dir</b>: the directory
208
+
209
+ </li>
210
+ <li><b>op</b>: output_info parameter
211
+
212
+ </li>
213
+ <li><b>level</b>: compilation_level parameter
214
+
215
+ </li>
216
+ </ul>
217
+ <p><a class="source-toggle" href="#"
218
+ onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
219
+ <div class="method-source-code" id="M000005-source">
220
+ <pre>
221
+ <span class="ruby-comment cmt"># File lib/jsc/closure_compiler.rb, line 115</span>
222
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">compile_dir</span>(<span class="ruby-identifier">dir</span>, <span class="ruby-identifier">op</span>, <span class="ruby-identifier">level</span>)
223
+ <span class="ruby-identifier">out</span> = <span class="ruby-value str">&quot;&quot;</span>
224
+ <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">entries</span>(<span class="ruby-identifier">dir</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
225
+ <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">extname</span>(<span class="ruby-identifier">file</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;.js&quot;</span>
226
+ <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Statistics for file #{file}...\n&quot;</span>
227
+ <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">compile</span>(<span class="ruby-identifier">file</span>, <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">op</span>, <span class="ruby-identifier">level</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n***************\n&quot;</span>
228
+ <span class="ruby-keyword kw">end</span>
229
+ <span class="ruby-keyword kw">end</span>
230
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">out</span>
231
+ <span class="ruby-keyword kw">end</span>
232
+ </pre>
233
+ </div>
234
+ </div>
235
+ </div>
236
+
237
+ <div id="method-M000001" class="method-detail">
238
+ <a name="M000001"></a>
239
+
240
+ <div class="method-heading">
241
+ <a href="#M000001" class="method-signature">
242
+ <span class="method-name">create_json_request</span><span class="method-args">(code)</span>
243
+ </a>
244
+ </div>
245
+
246
+ <div class="method-description">
247
+ <p>
248
+ Creates the <em>JSON</em> hash for the request and returns the hash to send
249
+ along with the request
250
+ </p>
251
+ <p>
252
+ Accepted parameters:
253
+ </p>
254
+ <ul>
255
+ <li><b>code</b>: json_code parameter
256
+
257
+ </li>
258
+ <li><b>level</b>: compilation_level parameter
259
+
260
+ </li>
261
+ </ul>
262
+ <p><a class="source-toggle" href="#"
263
+ onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
264
+ <div class="method-source-code" id="M000001-source">
265
+ <pre>
266
+ <span class="ruby-comment cmt"># File lib/jsc/closure_compiler.rb, line 31</span>
267
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create_json_request</span>(<span class="ruby-identifier">code</span>)
268
+ <span class="ruby-identifier">parameters</span> = {
269
+ <span class="ruby-value str">&quot;code&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">code</span>,
270
+ <span class="ruby-value str">&quot;level&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@level</span>,
271
+ <span class="ruby-value str">&quot;format&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">&quot;json&quot;</span>,
272
+ <span class="ruby-value str">&quot;info&quot;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@op</span>
273
+ }
274
+ <span class="ruby-keyword kw">end</span>
275
+ </pre>
276
+ </div>
277
+ </div>
278
+ </div>
279
+
280
+ <div id="method-M000008" class="method-detail">
281
+ <a name="M000008"></a>
282
+
283
+ <div class="method-heading">
284
+ <a href="#M000008" class="method-signature">
285
+ <span class="method-name">create_statistics_output</span><span class="method-args">(result)</span>
286
+ </a>
287
+ </div>
288
+
289
+ <div class="method-description">
290
+ <p>
291
+ Parses and returns the <em>result</em> JSON server response
292
+ </p>
293
+ <p>
294
+ Accepted parameters:
295
+ </p>
296
+ <ul>
297
+ <li><b>result</b>: the already parsed JSON server response
298
+
299
+ </li>
300
+ </ul>
301
+ <p><a class="source-toggle" href="#"
302
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
303
+ <div class="method-source-code" id="M000008-source">
304
+ <pre>
305
+ <span class="ruby-comment cmt"># File lib/jsc/closure_compiler.rb, line 189</span>
306
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create_statistics_output</span>(<span class="ruby-identifier">result</span>)
307
+ <span class="ruby-identifier">size_improvement</span> = <span class="ruby-identifier">result</span>[<span class="ruby-value str">'originalSize'</span>] <span class="ruby-operator">-</span> <span class="ruby-identifier">result</span>[<span class="ruby-value str">'compressedSize'</span>]
308
+ <span class="ruby-identifier">size_gzip_improvement</span> = <span class="ruby-identifier">result</span>[<span class="ruby-value str">'originalGzipSize'</span>] <span class="ruby-operator">-</span> <span class="ruby-identifier">result</span>[<span class="ruby-value str">'compressedGzipSize'</span>]
309
+ <span class="ruby-identifier">rate_improvement</span> = (<span class="ruby-identifier">size_improvement</span> <span class="ruby-operator">*</span> <span class="ruby-value">100</span>)<span class="ruby-operator">/</span><span class="ruby-identifier">result</span>[<span class="ruby-value str">'originalSize'</span>]
310
+ <span class="ruby-identifier">rate_gzip_improvement</span> = (<span class="ruby-identifier">size_gzip_improvement</span> <span class="ruby-operator">*</span> <span class="ruby-value">100</span>)<span class="ruby-operator">/</span><span class="ruby-identifier">result</span>[<span class="ruby-value str">'originalGzipSize'</span>]
311
+ <span class="ruby-identifier">out</span> = <span class="ruby-node">&quot;Original Size: #{result['originalSize']} bytes (#{result['originalGzipSize']} bytes gzipped) \n&quot;</span>
312
+ <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Compiled Size: #{result['compressedSize']} bytes (#{result['compressedGzipSize']} bytes gzipped) \n&quot;</span>
313
+ <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;\t Saved #{rate_improvement}% off the original size (#{rate_gzip_improvement}% off the gzipped size)&quot;</span>
314
+ <span class="ruby-keyword kw">end</span>
315
+ </pre>
316
+ </div>
317
+ </div>
318
+ </div>
319
+
320
+ <div id="method-M000004" class="method-detail">
321
+ <a name="M000004"></a>
322
+
323
+ <div class="method-heading">
324
+ <a href="#M000004" class="method-signature">
325
+ <span class="method-name">full_compile</span><span class="method-args">(arg, file, level)</span>
326
+ </a>
327
+ </div>
328
+
329
+ <div class="method-description">
330
+ <p>
331
+ Compiles a file or a piece of code and returns parsed output if no errors
332
+ or warnings are found
333
+ </p>
334
+ <p>
335
+ Accepted parameters:
336
+ </p>
337
+ <ul>
338
+ <li><b>arg</b>: the code or the file <a href="JSCompiler.html#M000011">path</a>
339
+ to <a href="JSCompiler.html#M000003">compile</a>
340
+
341
+ </li>
342
+ <li><b>file</b>: 0 =&gt; arg is code
343
+
344
+ <pre>
345
+ 1 =&gt; arg is a file path
346
+ </pre>
347
+ </li>
348
+ <li><b>level</b>: compilation_level parameter
349
+
350
+ </li>
351
+ </ul>
352
+ <p><a class="source-toggle" href="#"
353
+ onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
354
+ <div class="method-source-code" id="M000004-source">
355
+ <pre>
356
+ <span class="ruby-comment cmt"># File lib/jsc/closure_compiler.rb, line 102</span>
357
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">full_compile</span>(<span class="ruby-identifier">arg</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">level</span>)
358
+ [<span class="ruby-value str">'errors'</span>, <span class="ruby-value str">'warnings'</span>,<span class="ruby-value str">'compiled_code'</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span>
359
+ <span class="ruby-identifier">str</span> = <span class="ruby-constant">JSCompiler</span>.<span class="ruby-identifier">compile</span>(<span class="ruby-identifier">arg</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">x</span>, <span class="ruby-identifier">level</span>)
360
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">str</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">eql?</span>(<span class="ruby-value str">&quot;No &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">x</span>)
361
+ <span class="ruby-keyword kw">end</span>
362
+ <span class="ruby-keyword kw">end</span>
363
+ </pre>
364
+ </div>
365
+ </div>
366
+ </div>
367
+
368
+ <div id="method-M000010" class="method-detail">
369
+ <a name="M000010"></a>
370
+
371
+ <div class="method-heading">
372
+ <a href="#M000010" class="method-signature">
373
+ <span class="method-name">libpath</span><span class="method-args">( *args )</span>
374
+ </a>
375
+ </div>
376
+
377
+ <div class="method-description">
378
+ <p>
379
+ Returns the library <a href="JSCompiler.html#M000011">path</a> for the
380
+ module. If any arguments are given, they will be joined to the end of the
381
+ libray <a href="JSCompiler.html#M000011">path</a> using <tt>File.join</tt>.
382
+ </p>
383
+ <p><a class="source-toggle" href="#"
384
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
385
+ <div class="method-source-code" id="M000010-source">
386
+ <pre>
387
+ <span class="ruby-comment cmt"># File lib/jsc.rb, line 19</span>
388
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">libpath</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
389
+ <span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-value">? </span><span class="ruby-constant">LIBPATH</span> <span class="ruby-operator">:</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">LIBPATH</span>, <span class="ruby-identifier">args</span>.<span class="ruby-identifier">flatten</span>)
390
+ <span class="ruby-keyword kw">end</span>
391
+ </pre>
392
+ </div>
393
+ </div>
394
+ </div>
395
+
396
+ <div id="method-M000006" class="method-detail">
397
+ <a name="M000006"></a>
398
+
399
+ <div class="method-heading">
400
+ <a href="#M000006" class="method-signature">
401
+ <span class="method-name">parse_json_output</span><span class="method-args">(response)</span>
402
+ </a>
403
+ </div>
404
+
405
+ <div class="method-description">
406
+ <p>
407
+ Parses and returns JSON server <em>response</em>
408
+ </p>
409
+ <p>
410
+ Accepted parameters:
411
+ </p>
412
+ <ul>
413
+ <li><b>response</b>: the server response
414
+
415
+ </li>
416
+ </ul>
417
+ <p><a class="source-toggle" href="#"
418
+ onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
419
+ <div class="method-source-code" id="M000006-source">
420
+ <pre>
421
+ <span class="ruby-comment cmt"># File lib/jsc/closure_compiler.rb, line 130</span>
422
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_json_output</span>(<span class="ruby-identifier">response</span>)
423
+ <span class="ruby-identifier">out</span> = <span class="ruby-value str">&quot;&quot;</span>
424
+ <span class="ruby-identifier">parsed_response</span> = <span class="ruby-constant">JSON</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">response</span>, <span class="ruby-identifier">:max_nesting</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>)
425
+
426
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">parsed_response</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-value str">&quot;serverErrors&quot;</span>)
427
+ <span class="ruby-identifier">result</span> = <span class="ruby-identifier">parsed_response</span>[<span class="ruby-value str">'serverErrors'</span>]
428
+ <span class="ruby-identifier">error_message</span> = <span class="ruby-node">&quot;Server Error: #{result[0]['error']} \n&quot;</span>
429
+ <span class="ruby-identifier">error_message</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Error Code: #{result[0]['code']} \n&quot;</span>
430
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">error_message</span>.<span class="ruby-identifier">red</span>
431
+ <span class="ruby-comment cmt"># return red, bold, error_message, reset</span>
432
+ <span class="ruby-keyword kw">end</span>
433
+
434
+ <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@op</span>
435
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;compiled_code&quot;</span>
436
+ <span class="ruby-identifier">out</span> = <span class="ruby-identifier">parsed_response</span>[<span class="ruby-value str">'compiledCode'</span>]
437
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;statistics&quot;</span>
438
+ <span class="ruby-identifier">result</span> = <span class="ruby-identifier">parsed_response</span>[<span class="ruby-value str">'statistics'</span>]
439
+ <span class="ruby-identifier">out</span> = <span class="ruby-identifier">create_statistics_output</span>(<span class="ruby-identifier">result</span>)
440
+ <span class="ruby-keyword kw">else</span> <span class="ruby-value str">&quot;errors&quot;</span>
441
+ <span class="ruby-comment cmt">#case for errors or warnings</span>
442
+ <span class="ruby-keyword kw">begin</span>
443
+ <span class="ruby-identifier">result</span> = <span class="ruby-identifier">parsed_response</span>[<span class="ruby-ivar">@op</span>]
444
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">nil?</span>
445
+ <span class="ruby-identifier">num</span> = <span class="ruby-identifier">result</span>.<span class="ruby-identifier">size</span>
446
+ <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;You've got #{result.size} #{@op}\n&quot;</span>
447
+ <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
448
+ <span class="ruby-identifier">result</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">message</span><span class="ruby-operator">|</span>
449
+ <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
450
+ <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;\n#{@op.singularize.capitalize} n.#{i}\n&quot;</span>
451
+ <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;\t#{message['type']}: &quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">message</span>[<span class="ruby-ivar">@op</span>.<span class="ruby-identifier">singularize</span>] <span class="ruby-operator">+</span> <span class="ruby-node">&quot; at line #{message['lineno']} character #{message['charno']}\n&quot;</span>
452
+ <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\t&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">message</span>[<span class="ruby-value str">'line'</span>] <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">message</span>[<span class="ruby-value str">'line'</span>].<span class="ruby-identifier">nil?</span>
453
+ <span class="ruby-keyword kw">end</span>
454
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">out</span>
455
+ <span class="ruby-keyword kw">else</span>
456
+ <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;No #{@op}&quot;</span>
457
+ <span class="ruby-keyword kw">end</span>
458
+ <span class="ruby-keyword kw">rescue</span>
459
+ <span class="ruby-identifier">out</span> = <span class="ruby-value str">&quot;Error parsing JSON output...Check your output&quot;</span>
460
+ <span class="ruby-keyword kw">end</span>
461
+ <span class="ruby-keyword kw">end</span>
462
+ <span class="ruby-keyword kw">end</span>
463
+ </pre>
464
+ </div>
465
+ </div>
466
+ </div>
467
+
468
+ <div id="method-M000011" class="method-detail">
469
+ <a name="M000011"></a>
470
+
471
+ <div class="method-heading">
472
+ <a href="#M000011" class="method-signature">
473
+ <span class="method-name">path</span><span class="method-args">( *args )</span>
474
+ </a>
475
+ </div>
476
+
477
+ <div class="method-description">
478
+ <p>
479
+ Returns the lpath for the module. If any arguments are given, they will be
480
+ joined to the end of the <a href="JSCompiler.html#M000011">path</a> using
481
+ <tt>File.join</tt>.
482
+ </p>
483
+ <p><a class="source-toggle" href="#"
484
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
485
+ <div class="method-source-code" id="M000011-source">
486
+ <pre>
487
+ <span class="ruby-comment cmt"># File lib/jsc.rb, line 27</span>
488
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">path</span>( <span class="ruby-operator">*</span><span class="ruby-identifier">args</span> )
489
+ <span class="ruby-identifier">args</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-value">? </span><span class="ruby-constant">PATH</span> <span class="ruby-operator">:</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">PATH</span>, <span class="ruby-identifier">args</span>.<span class="ruby-identifier">flatten</span>)
490
+ <span class="ruby-keyword kw">end</span>
491
+ </pre>
492
+ </div>
493
+ </div>
494
+ </div>
495
+
496
+ <div id="method-M000002" class="method-detail">
497
+ <a name="M000002"></a>
498
+
499
+ <div class="method-heading">
500
+ <a href="#M000002" class="method-signature">
501
+ <span class="method-name">post_to_cc</span><span class="method-args">(data)</span>
502
+ </a>
503
+ </div>
504
+
505
+ <div class="method-description">
506
+ <p>
507
+ Sends the JSON request <em>data</em> hash to Google service and returns its
508
+ response
509
+ </p>
510
+ <p><a class="source-toggle" href="#"
511
+ onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
512
+ <div class="method-source-code" id="M000002-source">
513
+ <pre>
514
+ <span class="ruby-comment cmt"># File lib/jsc/closure_compiler.rb, line 42</span>
515
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">post_to_cc</span>(<span class="ruby-identifier">data</span>)
516
+ <span class="ruby-identifier">post_args</span> = {
517
+ <span class="ruby-value str">'js_code'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>[<span class="ruby-value str">&quot;code&quot;</span>],
518
+ <span class="ruby-value str">'compilation_level'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>[<span class="ruby-value str">&quot;level&quot;</span>],
519
+ <span class="ruby-value str">'output_format'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>[<span class="ruby-value str">&quot;format&quot;</span>],
520
+ <span class="ruby-value str">'output_info'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">data</span>[<span class="ruby-value str">&quot;info&quot;</span>]
521
+ }
522
+
523
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">$debug</span>
524
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;#DEBUG post_args \n&quot;</span>
525
+ <span class="ruby-identifier">puts</span> <span class="ruby-identifier">post_args</span>
526
+ <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\n&quot;</span>
527
+ <span class="ruby-keyword kw">end</span>
528
+
529
+ <span class="ruby-comment cmt"># send the request</span>
530
+ <span class="ruby-identifier">resp</span>, <span class="ruby-identifier">data</span> = <span class="ruby-constant">Net</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP</span>.<span class="ruby-identifier">post_form</span>(<span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-constant">GOOGLE_SERVICE_ADDRESS</span>), <span class="ruby-identifier">post_args</span>)
531
+ <span class="ruby-keyword kw">end</span>
532
+ </pre>
533
+ </div>
534
+ </div>
535
+ </div>
536
+
537
+ <div id="method-M000007" class="method-detail">
538
+ <a name="M000007"></a>
539
+
540
+ <div class="method-heading">
541
+ <a href="#M000007" class="method-signature">
542
+ <span class="method-name">read_file</span><span class="method-args">(file_name)</span>
543
+ </a>
544
+ </div>
545
+
546
+ <div class="method-description">
547
+ <p>
548
+ Reads file and returns its content
549
+ </p>
550
+ <p>
551
+ Accepted parameters:
552
+ </p>
553
+ <ul>
554
+ <li><b>file_name</b>: the absolute <a href="JSCompiler.html#M000011">path</a>
555
+ to the file
556
+
557
+ </li>
558
+ </ul>
559
+ <p><a class="source-toggle" href="#"
560
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
561
+ <div class="method-source-code" id="M000007-source">
562
+ <pre>
563
+ <span class="ruby-comment cmt"># File lib/jsc/closure_compiler.rb, line 176</span>
564
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read_file</span>(<span class="ruby-identifier">file_name</span>)
565
+ <span class="ruby-keyword kw">begin</span>
566
+ <span class="ruby-identifier">content</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">file_name</span>).<span class="ruby-identifier">read</span>
567
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">content</span>
568
+ <span class="ruby-keyword kw">rescue</span>
569
+ <span class="ruby-identifier">raise</span>
570
+ <span class="ruby-keyword kw">end</span>
571
+ <span class="ruby-keyword kw">end</span>
572
+ </pre>
573
+ </div>
574
+ </div>
575
+ </div>
576
+
577
+ <div id="method-M000012" class="method-detail">
578
+ <a name="M000012"></a>
579
+
580
+ <div class="method-heading">
581
+ <a href="#M000012" class="method-signature">
582
+ <span class="method-name">require_all_libs_relative_to</span><span class="method-args">( fname, dir = nil )</span>
583
+ </a>
584
+ </div>
585
+
586
+ <div class="method-description">
587
+ <p>
588
+ Utility method used to require all files ending in .rb that lie in the
589
+ directory below this file that has the same name as the filename passed in.
590
+ Optionally, a specific <em>directory</em> name can be passed in such that
591
+ the <em>filename</em> does not have to be equivalent to the directory.
592
+ </p>
593
+ <p><a class="source-toggle" href="#"
594
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
595
+ <div class="method-source-code" id="M000012-source">
596
+ <pre>
597
+ <span class="ruby-comment cmt"># File lib/jsc.rb, line 36</span>
598
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">require_all_libs_relative_to</span>( <span class="ruby-identifier">fname</span>, <span class="ruby-identifier">dir</span> = <span class="ruby-keyword kw">nil</span> )
599
+ <span class="ruby-identifier">dir</span> <span class="ruby-operator">||=</span> <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">fname</span>, <span class="ruby-value str">'.*'</span>)
600
+ <span class="ruby-identifier">search_me</span> = <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>(
601
+ <span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-operator">::</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">fname</span>), <span class="ruby-identifier">dir</span>, <span class="ruby-value str">'**'</span>, <span class="ruby-value str">'*.rb'</span>))
602
+
603
+ <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-identifier">search_me</span>).<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">rb</span><span class="ruby-operator">|</span> <span class="ruby-identifier">require</span> <span class="ruby-identifier">rb</span>}
604
+ <span class="ruby-keyword kw">end</span>
605
+ </pre>
606
+ </div>
607
+ </div>
608
+ </div>
609
+
610
+ <div id="method-M000009" class="method-detail">
611
+ <a name="M000009"></a>
612
+
613
+ <div class="method-heading">
614
+ <a href="#M000009" class="method-signature">
615
+ <span class="method-name">version</span><span class="method-args">()</span>
616
+ </a>
617
+ </div>
618
+
619
+ <div class="method-description">
620
+ <p>
621
+ Returns the <a href="JSCompiler.html#M000009">version</a> string for the
622
+ library.
623
+ </p>
624
+ <p><a class="source-toggle" href="#"
625
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
626
+ <div class="method-source-code" id="M000009-source">
627
+ <pre>
628
+ <span class="ruby-comment cmt"># File lib/jsc.rb, line 11</span>
629
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">version</span>
630
+ <span class="ruby-constant">VERSION</span>
631
+ <span class="ruby-keyword kw">end</span>
632
+ </pre>
633
+ </div>
634
+ </div>
635
+ </div>
636
+
637
+
638
+ </div>
639
+
640
+
641
+ </div>
642
+
643
+
644
+ <div id="validator-badges">
645
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
646
+ </div>
647
+
648
+ </body>
649
+ </html>