psyho_juicer 1.0.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.
- data/History.txt +58 -0
- data/Manifest.txt +58 -0
- data/Rakefile +96 -0
- data/Readme.rdoc +313 -0
- data/VERSION +1 -0
- data/bin/juicer +6 -0
- data/lib/juicer.rb +69 -0
- data/lib/juicer/asset/path.rb +275 -0
- data/lib/juicer/asset/path_resolver.rb +79 -0
- data/lib/juicer/binary.rb +171 -0
- data/lib/juicer/cache_buster.rb +131 -0
- data/lib/juicer/chainable.rb +106 -0
- data/lib/juicer/cli.rb +56 -0
- data/lib/juicer/command/install.rb +61 -0
- data/lib/juicer/command/list.rb +57 -0
- data/lib/juicer/command/merge.rb +205 -0
- data/lib/juicer/command/util.rb +32 -0
- data/lib/juicer/command/verify.rb +60 -0
- data/lib/juicer/css_cache_buster.rb +90 -0
- data/lib/juicer/datafy/datafy.rb +20 -0
- data/lib/juicer/dependency_resolver/css_dependency_resolver.rb +29 -0
- data/lib/juicer/dependency_resolver/dependency_resolver.rb +101 -0
- data/lib/juicer/dependency_resolver/javascript_dependency_resolver.rb +23 -0
- data/lib/juicer/ext/logger.rb +5 -0
- data/lib/juicer/ext/string.rb +47 -0
- data/lib/juicer/ext/symbol.rb +15 -0
- data/lib/juicer/image_embed.rb +129 -0
- data/lib/juicer/install/base.rb +186 -0
- data/lib/juicer/install/closure_compiler_installer.rb +69 -0
- data/lib/juicer/install/jslint_installer.rb +51 -0
- data/lib/juicer/install/rhino_installer.rb +53 -0
- data/lib/juicer/install/yui_compressor_installer.rb +67 -0
- data/lib/juicer/jslint.rb +90 -0
- data/lib/juicer/merger/base.rb +74 -0
- data/lib/juicer/merger/javascript_merger.rb +29 -0
- data/lib/juicer/merger/stylesheet_merger.rb +110 -0
- data/lib/juicer/minifyer/closure_compiler.rb +90 -0
- data/lib/juicer/minifyer/java_base.rb +77 -0
- data/lib/juicer/minifyer/yui_compressor.rb +96 -0
- data/test/bin/jslint-1.0.js +523 -0
- data/test/bin/jslint.js +523 -0
- data/test/bin/rhino1_7R1.zip +0 -0
- data/test/bin/rhino1_7R2-RC1.jar +0 -0
- data/test/bin/rhino1_7R2-RC1.zip +0 -0
- data/test/bin/yuicompressor +0 -0
- data/test/bin/yuicompressor-2.3.5.zip +0 -0
- data/test/bin/yuicompressor-2.4.2.jar +0 -0
- data/test/bin/yuicompressor-2.4.2.zip +0 -0
- data/test/fixtures/yui-download.html +425 -0
- data/test/test_helper.rb +175 -0
- data/test/unit/juicer/asset/path_resolver_test.rb +76 -0
- data/test/unit/juicer/asset/path_test.rb +370 -0
- data/test/unit/juicer/cache_buster_test.rb +104 -0
- data/test/unit/juicer/chainable_test.rb +94 -0
- data/test/unit/juicer/command/install_test.rb +58 -0
- data/test/unit/juicer/command/list_test.rb +81 -0
- data/test/unit/juicer/command/merge_test.rb +162 -0
- data/test/unit/juicer/command/util_test.rb +58 -0
- data/test/unit/juicer/command/verify_test.rb +48 -0
- data/test/unit/juicer/css_cache_buster_test.rb +71 -0
- data/test/unit/juicer/datafy_test.rb +37 -0
- data/test/unit/juicer/dependency_resolver/css_dependency_resolver_test.rb +36 -0
- data/test/unit/juicer/dependency_resolver/javascript_dependency_resolver_test.rb +50 -0
- data/test/unit/juicer/ext/string_test.rb +59 -0
- data/test/unit/juicer/ext/symbol_test.rb +27 -0
- data/test/unit/juicer/image_embed_test.rb +271 -0
- data/test/unit/juicer/install/installer_base_test.rb +214 -0
- data/test/unit/juicer/install/jslint_installer_test.rb +54 -0
- data/test/unit/juicer/install/rhino_installer_test.rb +57 -0
- data/test/unit/juicer/install/yui_compressor_test.rb +56 -0
- data/test/unit/juicer/jslint_test.rb +60 -0
- data/test/unit/juicer/merger/base_test.rb +122 -0
- data/test/unit/juicer/merger/javascript_merger_test.rb +74 -0
- data/test/unit/juicer/merger/stylesheet_merger_test.rb +180 -0
- data/test/unit/juicer/minifyer/closure_compressor_test.rb +107 -0
- data/test/unit/juicer/minifyer/yui_compressor_test.rb +116 -0
- data/test/unit/juicer_test.rb +1 -0
- metadata +278 -0
Binary file
|
Binary file
|
Binary file
|
File without changes
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,425 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>YUI Library :: Downloads</title>
|
5
|
+
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://feeds.feedburner.com/YuiDownloads">
|
6
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
7
|
+
<meta http-equiv="X-XRDS-Location" content="http://yuilibrary.com/xrds.xml">
|
8
|
+
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
9
|
+
<link rel="icon" href="/favicon.ico" type="image/x-icon">
|
10
|
+
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.0/build/reset-fonts-grids/reset-fonts-grids.css">
|
11
|
+
<link rel="stylesheet" type="text/css" href="/assets/skin/yuilib-11.30.2009.css">
|
12
|
+
<script type="text/javascript" src="http://yui.yahooapis.com/combo?2.8.0r4/build/yuiloader-dom-event/yuiloader-dom-event.js&3.0.0/build/yui/yui-min.js&3.0.0/build/loader/loader-min.js&3.0.0/build/oop/oop-min.js&3.0.0/build/dom/dom-min.js&3.0.0/build/event-custom/event-custom-base-min.js&3.0.0/build/event/event-base-min.js&3.0.0/build/pluginhost/pluginhost-min.js&3.0.0/build/node/node-min.js&3.0.0/build/event/event-delegate-min.js"></script>
|
13
|
+
<script>
|
14
|
+
var YUIConfig = {
|
15
|
+
baseyui2: 'http://yui.yahooapis.com/2.8.0r4/build/',
|
16
|
+
base: 'http://yui.yahooapis.com/3.0.0/build/',
|
17
|
+
debug: false,
|
18
|
+
//filter: 'DEBUG',
|
19
|
+
combine: true
|
20
|
+
};
|
21
|
+
</script>
|
22
|
+
<style>
|
23
|
+
#downloads tr.hide {
|
24
|
+
display: none;
|
25
|
+
}
|
26
|
+
</style>
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<div id="wrap">
|
30
|
+
<div id="doc3" class="yui-t5 home static">
|
31
|
+
<a name="top"></a>
|
32
|
+
|
33
|
+
<div id="hd">
|
34
|
+
<a href="/"><img src="/assets/skin/assets/yuilibrary-masthead-new.png" alt="YUILibrary - Open source JavaScript and CSS for building richly interactive software." /></a>
|
35
|
+
<form id="sitesearch" class="clearfix" action="http://search.yahoo.com/search" method="get">
|
36
|
+
<input name="vs" type="hidden" value="developer.yahoo.com">
|
37
|
+
<input name="vs" type="hidden" value="yuiblog.com">
|
38
|
+
<input name="vs" type="hidden" value="yuilibrary.com">
|
39
|
+
<input type="text" id="sitesearchbox" name="p">
|
40
|
+
<input type="submit" name="some_name" value="Search" id="sitesearchbutton">
|
41
|
+
</form>
|
42
|
+
<a id="gitribbon" href="http://github.com/yui" title="Fork YUI on GitHub"><img src="/assets/skin/assets/github-ribbon-yui-purple-right-png8.png" alt="Fork YUI on GitHub" /></a>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="navbar">
|
47
|
+
<ul id="projects" class="clearfix">
|
48
|
+
<li><a href="/" title="Home">Home</a></li>
|
49
|
+
<li><a href="/gallery" title="Gallery">Gallery</a></li>
|
50
|
+
<li><a href="/forum" title="Forums">Forums</a></li>
|
51
|
+
<li><a href="/projects/yui2/wiki">YUI 2.x</a></li>
|
52
|
+
<li><a href="/projects/yui3/wiki">YUI 3.x</a></li>
|
53
|
+
<li><a href="/projects/yuicompressor/wiki">YUICompressor</a></li>
|
54
|
+
<li><a href="/projects/yuidoc/wiki">YUIDoc</a></li>
|
55
|
+
<li><a href="/projects" class="more">More</a></li>
|
56
|
+
</ul>
|
57
|
+
|
58
|
+
<div id="sections" class="clearfix">
|
59
|
+
<ul class="clearfix">
|
60
|
+
|
61
|
+
<!-- <div id="subnav" class="navtabs clearfix">
|
62
|
+
<ul> -->
|
63
|
+
<li><a href="/forum/ucp.php?mode=register">Register</a></li>
|
64
|
+
<li><a href="/forum/ucp.php?mode=login&redirect=/downloads/">Login</a></li>
|
65
|
+
<!-- </ul>
|
66
|
+
</div> -->
|
67
|
+
</ul>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
<div id="bd">
|
71
|
+
<div id="yui-main">
|
72
|
+
<div class="yui-b main">
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
<h1><a href="http://feeds.feedburner.com/YuiDownloads"><img src="/assets/rss.png"></a> YUI Downloads</h1>
|
79
|
+
|
80
|
+
<div id="downloads">
|
81
|
+
<table id="yui2_downloads">
|
82
|
+
<thead>
|
83
|
+
<tr class="odd">
|
84
|
+
<th class="release"><h2 id="yui2">YUI 2.x</h2></th>
|
85
|
+
<th class="date">Date</th>
|
86
|
+
<th class="md5">MD5</th>
|
87
|
+
</tr>
|
88
|
+
</thead>
|
89
|
+
<tbody>
|
90
|
+
<tr class="even">
|
91
|
+
<td><a href="yui2/yui_2.8.0r4.zip" title="Version 2.8.0r4">Version 2.8.0r4</a></td>
|
92
|
+
<td>09/14/2009</td>
|
93
|
+
<td><em class="md5">9528eeab1bc4291eea329bccc9caa5de</em></td>
|
94
|
+
</tr>
|
95
|
+
<tr class="odd">
|
96
|
+
<td><a href="yui2/yui_2.7.0b.zip" title="Version 2.7.0b">Version 2.7.0b</a></td>
|
97
|
+
<td>02/19/2009</td>
|
98
|
+
<td><em class="md5">90778a161ce9108a23a590e5198b8116</em></td>
|
99
|
+
</tr>
|
100
|
+
<tr class="even">
|
101
|
+
<td><a href="yui2/yui_2.6.0.zip" title="Version 2.6.0">Version 2.6.0</a></td>
|
102
|
+
<td>10/01/2008</td>
|
103
|
+
<td><em class="md5">41bed4b882c9148cebff5dd1a0dd8727</em></td>
|
104
|
+
</tr>
|
105
|
+
<tr class="odd hide">
|
106
|
+
<td><a href="yui2/yui_2.5.2.zip" title="Version 2.5.2">Version 2.5.2</a></td>
|
107
|
+
<td>05/28/2008</td>
|
108
|
+
<td><em class="md5">eaadfcbcb651c50092bb679266aa3c20</em></td>
|
109
|
+
</tr>
|
110
|
+
<tr class="even hide">
|
111
|
+
<td><a href="yui2/yui_2.5.1.zip" title="Version 2.5.1">Version 2.5.1</a></td>
|
112
|
+
<td>03/19/2008</td>
|
113
|
+
<td><em class="md5">7416914904daa7d953583483db67609c</em></td>
|
114
|
+
</tr>
|
115
|
+
<tr class="odd hide">
|
116
|
+
<td><a href="yui2/yui_2.5.0.zip" title="Version 2.5.0">Version 2.5.0</a></td>
|
117
|
+
<td>02/20/2008</td>
|
118
|
+
<td><em class="md5">85d26357f8413de437318a9e2333dfce</em></td>
|
119
|
+
</tr>
|
120
|
+
<tr class="even hide">
|
121
|
+
<td><a href="yui2/yui_2.4.1.zip" title="Version 2.4.1">Version 2.4.1</a></td>
|
122
|
+
<td>12/19/2007</td>
|
123
|
+
<td><em class="md5">2a4b302cd94a6612b2799717eecdbfdb</em></td>
|
124
|
+
</tr>
|
125
|
+
<tr class="odd hide">
|
126
|
+
<td><a href="yui2/yui_2.4.0.zip" title="Version 2.4.0">Version 2.4.0</a></td>
|
127
|
+
<td>12/04/2007</td>
|
128
|
+
<td><em class="md5">749ff89f77b4cf9e5ec330e60b507776</em></td>
|
129
|
+
</tr>
|
130
|
+
<tr class="even hide">
|
131
|
+
<td><a href="yui2/yui_2.3.1.zip" title="Version 2.3.1">Version 2.3.1</a></td>
|
132
|
+
<td>09/19/2007</td>
|
133
|
+
<td><em class="md5">172ad5e3fa4c3e9424b29fb2fd854fb6</em></td>
|
134
|
+
</tr>
|
135
|
+
<tr class="odd hide">
|
136
|
+
<td><a href="yui2/yui_2.3.0.zip" title="Version 2.3.0">Version 2.3.0</a></td>
|
137
|
+
<td>07/30/2007</td>
|
138
|
+
<td><em class="md5">d085f77a00c4b4e30c0c748dd4680f60</em></td>
|
139
|
+
</tr>
|
140
|
+
<tr class="even hide">
|
141
|
+
<td><a href="yui2/yui_2.2.2.zip" title="Version 2.2.2">Version 2.2.2</a></td>
|
142
|
+
<td>04/18/2007</td>
|
143
|
+
<td><em class="md5">79483d2f16f597d46f92257744b46406</em></td>
|
144
|
+
</tr>
|
145
|
+
<tr class="odd hide">
|
146
|
+
<td><a href="yui2/yui_2.2.0a.zip" title="Version 2.2.0a">Version 2.2.0a</a></td>
|
147
|
+
<td>02/22/2007</td>
|
148
|
+
<td><em class="md5">a4ebf4e3c8413079edd0abaca99d8cb3</em></td>
|
149
|
+
</tr>
|
150
|
+
<tr class="even hide">
|
151
|
+
<td><a href="yui2/yui_0.12.2.zip" title="Version 0.12.2">Version 0.12.2</a></td>
|
152
|
+
<td>01/08/2007</td>
|
153
|
+
<td><em class="md5">312c580eb5368b5cae11cba6c1d325bb</em></td>
|
154
|
+
</tr>
|
155
|
+
<tr class="odd hide">
|
156
|
+
<td><a href="yui2/yui_0.11.4.zip" title="Version 0.11.4">Version 0.11.4</a></td>
|
157
|
+
<td>09/26/2006</td>
|
158
|
+
<td><em class="md5">8c8e7a3d9c770b82d57546d5fb60ef34</em></td>
|
159
|
+
</tr>
|
160
|
+
<tr class="even hide">
|
161
|
+
<td><a href="yui2/yui_0.10.0.zip" title="Version 0.10.0">Version 0.10.0</a></td>
|
162
|
+
<td>06/27/2006</td>
|
163
|
+
<td><em class="md5">4a631c55506e0814b174af3e81f8c94b</em></td>
|
164
|
+
</tr>
|
165
|
+
<tr class="show_more_yui2"><td colspan="3"><a href="?show=yui2" class="show_hidden" id="yui2_show_hidden">[Show older files]</a></td></tr> </tbody>
|
166
|
+
</table>
|
167
|
+
<table>
|
168
|
+
<thead>
|
169
|
+
<tr class="odd">
|
170
|
+
<th class="release"><h2 id="yui3">YUI 3.x</h2></th>
|
171
|
+
<th class="date">Date</th>
|
172
|
+
<th class="md5">MD5</th>
|
173
|
+
</tr>
|
174
|
+
</thead>
|
175
|
+
<tbody>
|
176
|
+
<tr class="even">
|
177
|
+
<td><a href="yui3/yui_3.0.0.zip">3.0.0</a></td><td>09/29/2009</td><td><em class="md5">da4b9cd0e92204a2b7c27a3a3686cec5</em></td>
|
178
|
+
</tr>
|
179
|
+
<tr class="odd">
|
180
|
+
<td><a href="yui3/yui_3.0.0b1.zip">3.0.0 Beta 1</a></td><td>06/24/2009</td><td><em class="md5">36921bfc07adce63dd3c9cb62dceb4fd</em></td>
|
181
|
+
</tr>
|
182
|
+
<tr class="even">
|
183
|
+
<td><a href="yui3/yui_3.0.0pr2.zip">Preview Release 2</a></td><td>12/09/2008</td><td><em class="md5">9e5d0fe289454ca11586d904142530d1</em></td>
|
184
|
+
</tr>
|
185
|
+
<tr class="odd">
|
186
|
+
<td><a href="yui3/yui_3.0.0pr1.zip">Preview Release 1</a></td><td>08/13/2008</td><td><em class="md5">a7f6c1237d89ca7d85afaf0978e55bfb</em></td>
|
187
|
+
</tr>
|
188
|
+
</tbody>
|
189
|
+
</table>
|
190
|
+
<table>
|
191
|
+
<thead>
|
192
|
+
<tr class="odd">
|
193
|
+
<th class="release"><h2 id="yuidoc">YUI Doc</h2></th>
|
194
|
+
<th class="date">Date</th>
|
195
|
+
<th class="md5">MD5</th>
|
196
|
+
</tr>
|
197
|
+
</thead>
|
198
|
+
<tbody>
|
199
|
+
<tr class="even">
|
200
|
+
<td><a href="yuidoc/yuidoc_1.0.0b1.zip">1.0.0b1</a></td><td>12/08/2008</td><td><em class="md5">cd5545d2dec8f7afe3d18e793538162c</em></td>
|
201
|
+
</tr>
|
202
|
+
</tbody>
|
203
|
+
</table>
|
204
|
+
<table>
|
205
|
+
<thead>
|
206
|
+
<tr class="odd">
|
207
|
+
<th class="release"><h2 id="builder">YUI Builder</h2></th>
|
208
|
+
<th class="date">Date</th>
|
209
|
+
<th class="md5">MD5</th>
|
210
|
+
</tr>
|
211
|
+
</thead>
|
212
|
+
<tbody>
|
213
|
+
<tr class="even">
|
214
|
+
<td><a href="builder/builder_1.0.0b1.zip">1.0.0b1</a></td><td>03/10/2009</td><td><em class="md5">aa21f55cffd83ea2f02f2c0fb87265ae</em></td>
|
215
|
+
</tr>
|
216
|
+
</tbody>
|
217
|
+
</table>
|
218
|
+
<table>
|
219
|
+
<thead>
|
220
|
+
<tr class="odd">
|
221
|
+
<th class="release"><h2 id="yuicompressor">YUI Compressor</h2></th>
|
222
|
+
<th class="date">Date</th>
|
223
|
+
<th class="md5">MD5</th>
|
224
|
+
</tr>
|
225
|
+
</thead>
|
226
|
+
<tbody>
|
227
|
+
<tr class="even">
|
228
|
+
<td><a href="yuicompressor/yuicompressor-2.4.2.zip">2.4.2</a></td><td>06/10/2009</td><td><em class="md5">2a526a9aedfe2affceed1e1c3f9c0579</em></td>
|
229
|
+
</tr>
|
230
|
+
</tbody>
|
231
|
+
</table>
|
232
|
+
<table>
|
233
|
+
<thead>
|
234
|
+
<tr class="odd">
|
235
|
+
<th class="release"><h2 id="phploader">YUI PHP Loader</h2></th>
|
236
|
+
<th class="date">Date</th>
|
237
|
+
<th class="md5">MD5</th>
|
238
|
+
</tr>
|
239
|
+
</thead>
|
240
|
+
<tbody>
|
241
|
+
<tr class="even">
|
242
|
+
<td><a href="phploader/yuiphploader-1.0.0b2.zip">1.0.0b2</a></td><td>12/02/2009</td><td><em class="md5">963292134958e2a60aa5473cb148db3b</em></td>
|
243
|
+
</tr>
|
244
|
+
<tr class="odd">
|
245
|
+
<td><a href="phploader/yuiphploader-1.0.0b1.zip">1.0.0b1</a></td><td>09/09/2009</td><td><em class="md5">f141af403d076abaf98be362658a61e1</em></td>
|
246
|
+
</tr>
|
247
|
+
</tbody>
|
248
|
+
</table>
|
249
|
+
</div>
|
250
|
+
|
251
|
+
</div>
|
252
|
+
</div>
|
253
|
+
<div class="yui-b secondary sidebar">
|
254
|
+
<div class="mod">
|
255
|
+
<div class="hd"><h4><a href="/forum/recent.php">Recent Forums Posts</a></h4></div>
|
256
|
+
<div class="bd">
|
257
|
+
<ul>
|
258
|
+
<li>
|
259
|
+
<h5><a href="/forum/viewtopic.php?p=8069#p8069">Tooltips on Hover over TabView Tabs</a></h5>
|
260
|
+
<cite class="author">Craig Cassata</cite> <cite class="date">Jan 20th</cite>
|
261
|
+
</li>
|
262
|
+
<li>
|
263
|
+
<h5><a href="/forum/viewtopic.php?p=8068#p8068">TreeView - configure setDynamicLoad()</a></h5>
|
264
|
+
<cite class="author">koalabruder</cite> <cite class="date">Jan 20th</cite>
|
265
|
+
</li>
|
266
|
+
<li>
|
267
|
+
<h5><a href="/forum/viewtopic.php?p=8067#p8067">Re: Prevent onclick from inside mousedown event?</a></h5>
|
268
|
+
<cite class="author">Adam Moore</cite> <cite class="date">Jan 20th</cite>
|
269
|
+
</li>
|
270
|
+
<li>
|
271
|
+
<h5><a href="/forum/viewtopic.php?p=8066#p8066">Re: Datatable "grays out" after updating a column's data.</a></h5>
|
272
|
+
<cite class="author">Satyam</cite> <cite class="date">Jan 20th</cite>
|
273
|
+
</li>
|
274
|
+
<li>
|
275
|
+
<h5><a href="/forum/viewtopic.php?p=8065#p8065">Re: Datatable "grays out" after updating a column's data.</a></h5>
|
276
|
+
<cite class="author">Lonnie Broadnax</cite> <cite class="date">Jan 20th</cite>
|
277
|
+
</li>
|
278
|
+
<li>
|
279
|
+
<h5><a href="/forum/viewtopic.php?p=8064#p8064">Re: Datatable "grays out" after updating a column's data.</a></h5>
|
280
|
+
<cite class="author">Lonnie Broadnax</cite> <cite class="date">Jan 20th</cite>
|
281
|
+
</li>
|
282
|
+
<li>
|
283
|
+
<h5><a href="/forum/viewtopic.php?p=8063#p8063">Re: AutoComplete doesn't ignore keydown events for shift keys</a></h5>
|
284
|
+
<cite class="author">Luke Smith</cite> <cite class="date">Jan 20th</cite>
|
285
|
+
</li>
|
286
|
+
<li>
|
287
|
+
<h5><a href="/forum/viewtopic.php?p=8062#p8062">Re: Cross domain file upload issue</a></h5>
|
288
|
+
<cite class="author">Alex Led</cite> <cite class="date">Jan 20th</cite>
|
289
|
+
</li>
|
290
|
+
</ul>
|
291
|
+
|
292
|
+
</div>
|
293
|
+
</div>
|
294
|
+
<div class="mod">
|
295
|
+
<div class="hd"><h4>Recent <a href="http://yuiblog.com">YUI Blog</a> Posts</h4></div>
|
296
|
+
<div class="bd">
|
297
|
+
|
298
|
+
<!-- Auto-generated Sidebar (Wed, 20 Jan 2010 23:03:01 +0000) -->
|
299
|
+
<ul>
|
300
|
+
<li>
|
301
|
+
<h5><a href="http://www.yuiblog.com/blog/2010/01/19/in-the-wild-for-january-19-2010/">In the Wild for January 19, 2010</a></h5>
|
302
|
+
<cite class="author">Eric Miraglia</cite> <cite class="date">Jan 19th</cite>
|
303
|
+
</li>
|
304
|
+
<li>
|
305
|
+
<h5><a href="http://www.yuiblog.com/blog/2010/01/08/in-the-wild-for-january-10-2010/">In the Wild for January 10, 2010</a></h5>
|
306
|
+
<cite class="author">Eric Miraglia</cite> <cite class="date">Jan 8th</cite>
|
307
|
+
</li>
|
308
|
+
<li>
|
309
|
+
<h5><a href="http://www.yuiblog.com/blog/2010/01/07/more-code-reuse-patterns-in-yui3/">More code reuse patterns in YUI3</a></h5>
|
310
|
+
<cite class="author">Stoyan Stefanov</cite> <cite class="date">Jan 7th</cite>
|
311
|
+
</li>
|
312
|
+
<li>
|
313
|
+
<h5><a href="http://www.yuiblog.com/blog/2010/01/06/inheritance-patterns-in-yui-3/">Inheritance Patterns in YUI 3</a></h5>
|
314
|
+
<cite class="author">Stoyan Stefanov</cite> <cite class="date">Jan 6th</cite>
|
315
|
+
</li>
|
316
|
+
<li>
|
317
|
+
<h5><a href="http://www.yuiblog.com/blog/2010/01/05/crockford-at-accu/">Crockford delivering “State and Future of JavaScript” talk at ACCU in Mountain View on January 13</a></h5>
|
318
|
+
<cite class="author">Eric Miraglia</cite> <cite class="date">Jan 5th</cite>
|
319
|
+
</li>
|
320
|
+
<li>
|
321
|
+
<h5><a href="http://www.yuiblog.com/blog/2010/01/05/enterprise-web-developer/">Implementation Focus: Enterprise Web Developer, a Python/YUI Framework</a></h5>
|
322
|
+
<cite class="author">Rob Tweed</cite> <cite class="date">Jan 5th</cite>
|
323
|
+
</li>
|
324
|
+
</ul>
|
325
|
+
|
326
|
+
<!-- End Auto-generated Sidebar -->
|
327
|
+
|
328
|
+
</div>
|
329
|
+
</div>
|
330
|
+
<div class="mod">
|
331
|
+
<div class="hd"><h4>Online Users</h4></div>
|
332
|
+
<div class="bd">
|
333
|
+
<ul>
|
334
|
+
<li>
|
335
|
+
<h5><a href="/forum/memberlist.php?mode=viewprofile&u=906">paolo nesti poggi</a></h5>
|
336
|
+
</li>
|
337
|
+
<li>
|
338
|
+
<h5><a href="/forum/memberlist.php?mode=viewprofile&u=5327">FiZ</a></h5>
|
339
|
+
</li>
|
340
|
+
<li>
|
341
|
+
<h5><a href="/forum/memberlist.php?mode=viewprofile&u=54">Dav Glass</a></h5>
|
342
|
+
</li>
|
343
|
+
<li>
|
344
|
+
<h5><a href="/forum/memberlist.php?mode=viewprofile&u=58">Adam Moore</a></h5>
|
345
|
+
</li>
|
346
|
+
</ul>
|
347
|
+
|
348
|
+
</div>
|
349
|
+
</div>
|
350
|
+
</div>
|
351
|
+
</div>
|
352
|
+
<div id="ft">
|
353
|
+
|
354
|
+
<div id="trough">
|
355
|
+
<div class="yui-g">
|
356
|
+
<div class="yui-g first">
|
357
|
+
<div class="yui-u first">
|
358
|
+
<h5>YUI Projects</h5>
|
359
|
+
<ul>
|
360
|
+
<li><a href="/downloads">All YUI Downloads</a></li>
|
361
|
+
<li><a href="/projects/yui2">YUI 2.x</a></li>
|
362
|
+
<li><a href="/projects/yui3">YUI 3.x</a></li>
|
363
|
+
<li><a href="/projects/yuidoc">YUIDoc</a></li>
|
364
|
+
<li><a href="/projects/yuicompressor">YUICompressor</a></li>
|
365
|
+
<li class="more"><a href="/projects/yuilibrary">YUILibrary.com</a></li>
|
366
|
+
<li class="more"><a href="/projects/builder">YUI Build Tool</a></li>
|
367
|
+
<li class="more"><a href="/projects/phploader">YUI PHP Loader</a></li>
|
368
|
+
</ul>
|
369
|
+
</div>
|
370
|
+
<div class="yui-u">
|
371
|
+
<h5>Pages & Links</h5>
|
372
|
+
<ul>
|
373
|
+
<li><a href="/downloads">All YUI Downloads</a></li>
|
374
|
+
<li><a href="/gitfaq">Git FAQ</a></li>
|
375
|
+
<li><a href="http://developer.yahoo.com/yui/articles/gbs" class="ext-link" title="Graded Browser Support"><span class="icon">Graded Browser Support</span></a></li>
|
376
|
+
<li><a href="/contrib">Contribute to YUI</a></li>
|
377
|
+
<li><a href="/forum/stats">Forum Stats</a></li>
|
378
|
+
<li><a href="/gallery/stats">Gallery Stats</a></li>
|
379
|
+
</ul>
|
380
|
+
</div>
|
381
|
+
</div>
|
382
|
+
<div class="yui-g">
|
383
|
+
<div class="yui-u first">
|
384
|
+
<h5>Contribute</h5>
|
385
|
+
<ul>
|
386
|
+
<li><a href="http://developer.yahoo.com/yui/articles/reportingbugs/" class="ext-link" title="Submit a Bug"><span class="icon">Submit a Bug</span></a></li>
|
387
|
+
<li><a href="http://developer.yahoo.com/yui/articles/reportingbugs/" class="ext-link" title="Request a Feature"><span class="icon">Request a Feature</span></a></li>
|
388
|
+
<li><a href="http://developer.yahoo.com/yui/community/contribute.html" class="ext-link" title="Write Code"><span class="icon">Write Code</span></a></li>
|
389
|
+
<li><a href="/team">Meet the Team</a></li>
|
390
|
+
</ul>
|
391
|
+
</div>
|
392
|
+
<div class="yui-u">
|
393
|
+
<h5>Follow YUI</h5>
|
394
|
+
<ul>
|
395
|
+
<li><a href="http://github.com/yui/" class="ext-link" title="on GitHub"><span class="icon">on GitHub</span></a></li>
|
396
|
+
<li><a href="http://twitter.com/yuilibrary" class="ext-link" title="on Twitter"><span class="icon">on Twitter</span></a></li>
|
397
|
+
<li><a href="http://friendfeed.com/yuilibrary?subscribe=1" class="ext-link" title="on FriendFeed"><span class="icon">on FriendFeed</span></a></li>
|
398
|
+
<li><a href="http://www.facebook.com/pages/Yahoo-User-Interface-Library-YUI/15384729838" class="ext-link" title="on Facebook"><span class="icon">on Facebook</span></a></li>
|
399
|
+
<li><a href="/irc">on IRC</a></li>
|
400
|
+
<li><a href="http://yuiblog.com" class="ext-link" title="YUI Blog"><span class="icon">YUI Blog</span></a></li>
|
401
|
+
<li><a href="http://developer.yahoo.com/yui/theater" class="ext-link" title="YUI Theater"><span class="icon">YUI Theater</span></a></li>
|
402
|
+
<li><a href="/forum">YUI Forums</a></li>
|
403
|
+
</ul>
|
404
|
+
</div>
|
405
|
+
</div>
|
406
|
+
</div>
|
407
|
+
</div>
|
408
|
+
|
409
|
+
<p>© 2010 YUI Library - <a href="/projects/yuilibrary/wiki/Credits">Site Credits</a></p>
|
410
|
+
|
411
|
+
</div>
|
412
|
+
</div>
|
413
|
+
<script type="text/javascript" src="http://track2.mybloglog.com/js/jsserv.php?mblID=2008112513433661"></script>
|
414
|
+
<script type="text/javascript" src="/assets/more-09.17.2009.js"></script>
|
415
|
+
<script>
|
416
|
+
YUI(YUIConfig).use('node', function(Y) {
|
417
|
+
Y.on('click', function(e) {
|
418
|
+
e.halt();
|
419
|
+
Y.all('#yui2_downloads tr').removeClass('hide');
|
420
|
+
e.target.get('parentNode.parentNode').setStyle('display', 'none');
|
421
|
+
}, '#yui2_show_hidden');
|
422
|
+
});
|
423
|
+
</script>
|
424
|
+
</body>
|
425
|
+
</html>
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,175 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
require 'mocha'
|
5
|
+
require 'open-uri'
|
6
|
+
require 'juicer'
|
7
|
+
|
8
|
+
begin
|
9
|
+
require 'turn'
|
10
|
+
rescue LoadError => err
|
11
|
+
puts "Protip: Install turn gem for better test reports. #{err.message}"
|
12
|
+
end
|
13
|
+
|
14
|
+
if RUBY_VERSION < "1.9"
|
15
|
+
require 'redgreen' if ENV['TM_DIRECTORY'].nil?
|
16
|
+
end
|
17
|
+
|
18
|
+
$data_dir = File.join(File.expand_path(File.dirname(__FILE__)), "data")
|
19
|
+
Juicer.send(:remove_const, :LOGGER)
|
20
|
+
Juicer::LOGGER = Logger.new(StringIO.new)
|
21
|
+
|
22
|
+
# Prefixes paths with the data dir
|
23
|
+
def path(path)
|
24
|
+
File.join($data_dir, path)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Allow for testing of private methods inside a block:
|
28
|
+
#
|
29
|
+
# MyClass.publicize_methods do
|
30
|
+
# assert MyClass.some_private_method
|
31
|
+
# end
|
32
|
+
class Class
|
33
|
+
def publicize_methods
|
34
|
+
saved_private_instance_methods = self.private_instance_methods
|
35
|
+
self.class_eval { public(*saved_private_instance_methods) }
|
36
|
+
yield
|
37
|
+
self.class_eval { private(*saved_private_instance_methods) }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Intercept calls to open, and return local files
|
43
|
+
#
|
44
|
+
module Kernel
|
45
|
+
private
|
46
|
+
alias juicer_original_open open # :nodoc:
|
47
|
+
|
48
|
+
def open(name, *rest, &block)
|
49
|
+
if name =~ /http.+yuicompressor-(\d\.\d\.\d)\.zip$/
|
50
|
+
name = File.join($data_dir, "..", "bin", "yuicompressor-#{$1}.zip")
|
51
|
+
elsif name =~ /http:\/\/yuilibrary\.com\/download/
|
52
|
+
name = File.join($data_dir, "../fixtures/yui-download.html")
|
53
|
+
elsif name =~ /http.+yuicompressor/
|
54
|
+
name = File.join($data_dir, "..", "bin", "yuicompressor")
|
55
|
+
elsif name =~ /http.+jslint/
|
56
|
+
name = File.join($data_dir, "..", "bin", "jslint.js")
|
57
|
+
elsif name =~ /ftp.+rhino(.+)\.zip/
|
58
|
+
name = File.join($data_dir, "..", "bin", "rhino#{$1}.zip")
|
59
|
+
end
|
60
|
+
|
61
|
+
juicer_original_open(File.expand_path(name), *rest, &block)
|
62
|
+
end
|
63
|
+
|
64
|
+
module_function :open
|
65
|
+
end
|
66
|
+
|
67
|
+
module Juicer
|
68
|
+
module Test
|
69
|
+
|
70
|
+
# Alot of Juicer functionality are filesystem operations. This class sets up files
|
71
|
+
# to work on
|
72
|
+
class FileSetup
|
73
|
+
attr_reader :file_count
|
74
|
+
|
75
|
+
def initialize(dir = $data_dir)
|
76
|
+
@dir = dir
|
77
|
+
@file_count = 0
|
78
|
+
end
|
79
|
+
|
80
|
+
# Recursively deletes the data directory
|
81
|
+
def delete
|
82
|
+
res = FileUtils.rm_rf(@dir) if File.exist?(@dir)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Set up files for unit tests
|
86
|
+
def create(force = false)
|
87
|
+
return if File.exist?(@dir) && !force
|
88
|
+
|
89
|
+
delete if File.exist?(@dir)
|
90
|
+
mkdir @dir
|
91
|
+
mkfile(@dir, 'a.css', "@import 'b.css';\n\n/* Dette er a.css */")
|
92
|
+
mkfile(@dir, 'a.js', "/**\n * @depend b.js\n */\n\n/* Dette er a.js */")
|
93
|
+
mkfile(@dir, 'b.css', "/* Dette er b.css */")
|
94
|
+
mkfile(@dir, 'b.js', "/**\n * @depends a.js\n */\n\n/* Dette er b.css */")
|
95
|
+
mkfile(@dir, 'a1.css', "@import\t'b1.css';\n@import 'c1.css';\nbody {\n width: 800px;\n}\n")
|
96
|
+
mkfile(@dir, 'b1.css', "@import url('d1.css');\n\nhtml {\n background: red;\n}\n")
|
97
|
+
mkfile(@dir, 'c1.css', "h1 {\n font-size: 12px;\n}\n")
|
98
|
+
mkfile(@dir, 'd1.css', "h2 {\n font-size: 10px;\n}\n")
|
99
|
+
mkfile(@dir, 'ok.js', "function hey() {\n return \"Hey\";\n}\n")
|
100
|
+
mkfile(@dir, 'not-ok.js', "var a = 34\nb = 78;\n")
|
101
|
+
|
102
|
+
images = mkdir File.join(@dir, "images")
|
103
|
+
mkfile(images, '1.png', "")
|
104
|
+
|
105
|
+
css_dir = mkdir File.join(@dir, "css")
|
106
|
+
mkfile(css_dir, '2.gif', "")
|
107
|
+
|
108
|
+
css = <<-CSS
|
109
|
+
body {
|
110
|
+
background: url(../images/1.png);
|
111
|
+
}
|
112
|
+
|
113
|
+
h1 {
|
114
|
+
background: url(../a1.css) 0 0 no-repeat;
|
115
|
+
}
|
116
|
+
|
117
|
+
h2 {
|
118
|
+
background: url(2.gif) no-repeat;
|
119
|
+
}
|
120
|
+
CSS
|
121
|
+
|
122
|
+
mkfile(css_dir, 'test.css', css)
|
123
|
+
mkfile(css_dir, 'test2.css', "body { background: url(/images/1.png); }")
|
124
|
+
mkfile(@dir, 'path_test.css', "@import 'css/test.css';\n\nbody {\n background: url(css/2.gif) no-repeat;\n}\n")
|
125
|
+
|
126
|
+
css = <<-CSS
|
127
|
+
body {
|
128
|
+
background: url(/images/1.png);
|
129
|
+
}
|
130
|
+
|
131
|
+
h1 {
|
132
|
+
background: url(/css/2.gif);
|
133
|
+
background: url(/a1.css) 0 0 no-repeat;
|
134
|
+
}
|
135
|
+
|
136
|
+
h2 {
|
137
|
+
background: url(/css/2.gif) no-repeat;
|
138
|
+
}
|
139
|
+
|
140
|
+
p { background: url(/a2.css); }
|
141
|
+
CSS
|
142
|
+
|
143
|
+
mkfile(@dir, 'path_test2.css', css)
|
144
|
+
|
145
|
+
mkfile(@dir, 'Changelog.txt', "2008.02.09 | stb-base 1.29\n\nFEATURE: Core | Bla bla bla bla bla\nFEATURE: UI: | Bla bla bla bla bla\n\n\n2008.02.09 | stb-base 1.29\n\nFEATURE: Core | Bla bla bla bla bla\nFEATURE: UI: | Bla bla bla bla bla\n")
|
146
|
+
|
147
|
+
# my_app.js depends on the pkg directory
|
148
|
+
mkfile(@dir, "my_app.js", "// @depend pkg\n var myApp = pkg.a;")
|
149
|
+
|
150
|
+
# package directory contains pkg.js, module/moda.js, and module/modb.js
|
151
|
+
# moda.js depends on ../pkg.js
|
152
|
+
# modb.js depends on moda.js and ../pkg.js
|
153
|
+
pkg_dir = mkdir File.join(@dir, "pkg")
|
154
|
+
module_dir = mkdir File.join(pkg_dir, "module")
|
155
|
+
mkfile(pkg_dir, "pkg.js", "var pkg = {};")
|
156
|
+
mkfile(module_dir, "moda.js", "// @depend ../pkg.js\npkg.a = '';")
|
157
|
+
mkfile(module_dir, "modb.js", "// @depend ../pkg.js\n// @depend moda.js\npkg.b = '';")
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
private
|
162
|
+
# Create a file
|
163
|
+
def mkfile(parent, name, content)
|
164
|
+
file = File.open(File.join(parent, name), 'w+') { |f| f.puts content }
|
165
|
+
@file_count += 1
|
166
|
+
end
|
167
|
+
|
168
|
+
def mkdir(dir)
|
169
|
+
FileUtils.mkdir(dir)
|
170
|
+
@file_count += 1
|
171
|
+
dir
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|