asset_hat 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
- pkg/
1
+ _site/
2
+ pkg/
data/HISTORY CHANGED
@@ -1,5 +1,10 @@
1
1
  = HISTORY
2
2
 
3
+ == Version 0.2.1 (2010-07-21)
4
+ * Added WebFont Loader to supported JS vendors.
5
+ * Stopped adding asset hosts to `url(/htc/...)` URLs because IE 6, by default,
6
+ refuses to run .htc files from other domains, including CDN subdomains.
7
+
3
8
  == Version 0.2.0 (2010-06-10)
4
9
  * Added support for loading many more JS vendors from Google's CDN, including
5
10
  Prototype, MooTools, and SWFObject.
data/README.rdoc CHANGED
@@ -3,8 +3,8 @@
3
3
  Your assets are covered.
4
4
 
5
5
  With Rails' default asset caching, CSS and JS are concatenated (not even
6
- minified) the first time that bundle is requested. Not good enough. AssetHat
7
- can automatically:
6
+ minified) at runtime when that bundle is first requested. Not good enough.
7
+ AssetHat can automatically:
8
8
 
9
9
  * Easily *minify* and *bundle* CSS and JS on deploy to reduce file sizes and
10
10
  HTTP requests.
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- :major: 0
3
2
  :minor: 2
4
- :patch: 0
3
+ :patch: 1
5
4
  :build:
5
+ :major: 0
data/asset_hat.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{asset_hat}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ron DeVera", "Mint Digital"]
12
- s.date = %q{2010-06-10}
12
+ s.date = %q{2010-07-21}
13
13
  s.description = %q{Minify, bundle, and optimize CSS/JS assets.}
14
14
  s.email = %q{ronald.devera@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -81,7 +81,7 @@
81
81
  <a class='source-toggle' href='#' onclick="toggleCode('M000017-source'); return false">
82
82
  [show source]
83
83
  </a>
84
- <pre id='M000017-source'> <span class="ruby-comment cmt"># File lib/asset_hat/css.rb, line 105</span>&#x000A;105: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">cssmin</span>(<span class="ruby-identifier">input_string</span>)&#x000A;106: <span class="ruby-constant">CSSMin</span>.<span class="ruby-identifier">minify</span>(<span class="ruby-identifier">input_string</span>)&#x000A;107: <span class="ruby-keyword kw">end</span></pre>
84
+ <pre id='M000017-source'> <span class="ruby-comment cmt"># File lib/asset_hat/css.rb, line 108</span>&#x000A;108: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">cssmin</span>(<span class="ruby-identifier">input_string</span>)&#x000A;109: <span class="ruby-constant">CSSMin</span>.<span class="ruby-identifier">minify</span>(<span class="ruby-identifier">input_string</span>)&#x000A;110: <span class="ruby-keyword kw">end</span></pre>
85
85
  </div>
86
86
  </div>
87
87
  <div class='method public-class' id='method-M000016'>
@@ -102,7 +102,7 @@
102
102
  <a class='source-toggle' href='#' onclick="toggleCode('M000016-source'); return false">
103
103
  [show source]
104
104
  </a>
105
- <pre id='M000016-source'> <span class="ruby-comment cmt"># File lib/asset_hat/css.rb, line 83</span>&#x000A;83: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">weak</span>(<span class="ruby-identifier">input_string</span>)&#x000A;84: <span class="ruby-identifier">input</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">input_string</span>)&#x000A;85: <span class="ruby-identifier">output</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>&#x000A;86: &#x000A;87: <span class="ruby-identifier">input</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>&#x000A;88: <span class="ruby-comment cmt"># Remove indentation and trailing whitespace (including line breaks)</span>&#x000A;89: <span class="ruby-identifier">line</span>.<span class="ruby-identifier">strip!</span>&#x000A;90: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">blank?</span>&#x000A;91: &#x000A;92: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">line</span>&#x000A;93: <span class="ruby-keyword kw">end</span>&#x000A;94: &#x000A;95: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">rewind</span>&#x000A;96: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">read</span>&#x000A;97: <span class="ruby-keyword kw">end</span></pre>
105
+ <pre id='M000016-source'> <span class="ruby-comment cmt"># File lib/asset_hat/css.rb, line 86</span>&#x000A; 86: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">weak</span>(<span class="ruby-identifier">input_string</span>)&#x000A; 87: <span class="ruby-identifier">input</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">input_string</span>)&#x000A; 88: <span class="ruby-identifier">output</span> = <span class="ruby-constant">StringIO</span>.<span class="ruby-identifier">new</span>&#x000A; 89: &#x000A; 90: <span class="ruby-identifier">input</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>&#x000A; 91: <span class="ruby-comment cmt"># Remove indentation and trailing whitespace (including line breaks)</span>&#x000A; 92: <span class="ruby-identifier">line</span>.<span class="ruby-identifier">strip!</span>&#x000A; 93: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">blank?</span>&#x000A; 94: &#x000A; 95: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">line</span>&#x000A; 96: <span class="ruby-keyword kw">end</span>&#x000A; 97: &#x000A; 98: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">rewind</span>&#x000A; 99: <span class="ruby-identifier">output</span>.<span class="ruby-identifier">read</span>&#x000A;100: <span class="ruby-keyword kw">end</span></pre>
106
106
  </div>
107
107
  </div>
108
108
  </div>
@@ -121,7 +121,7 @@
121
121
  </li>
122
122
  </ul>
123
123
  <p>
124
- An asset host is added to every asset URL in the <a
124
+ An asset host is added to every image URL in the <a
125
125
  href="CSS.html">CSS</a>, e.g., <tt>background:
126
126
  url(http://assets2.example.com/images/foo.png)</tt>; if <tt>%d</tt> in the
127
127
  asset host, it is replaced with an arbitrary number in 0-3, inclusive.
@@ -131,7 +131,7 @@
131
131
  <a class='source-toggle' href='#' onclick="toggleCode('M000015-source'); return false">
132
132
  [show source]
133
133
  </a>
134
- <pre id='M000015-source'> <span class="ruby-comment cmt"># File lib/asset_hat/css.rb, line 70</span>&#x000A;70: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">add_asset_hosts</span>(<span class="ruby-identifier">css</span>, <span class="ruby-identifier">asset_host</span>)&#x000A;71: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">asset_host</span>.<span class="ruby-identifier">blank?</span>&#x000A;72: <span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/url[\s]*\((\/(images|htc)\/[^)]+)\)/</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span>&#x000A;73: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">$1</span>&#x000A;74: <span class="ruby-node">&quot;url(#{(asset_host =~ /%d/) ? asset_host % (src.hash % 4) : asset_host}#{src})&quot;</span>&#x000A;75: <span class="ruby-keyword kw">end</span>&#x000A;76: <span class="ruby-keyword kw">end</span></pre>
134
+ <pre id='M000015-source'> <span class="ruby-comment cmt"># File lib/asset_hat/css.rb, line 70</span>&#x000A;70: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">add_asset_hosts</span>(<span class="ruby-identifier">css</span>, <span class="ruby-identifier">asset_host</span>)&#x000A;71: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">asset_host</span>.<span class="ruby-identifier">blank?</span>&#x000A;72: <span class="ruby-identifier">css</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/url[\s]*\((\/images\/[^)]+)\)/</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span>&#x000A;73: <span class="ruby-comment cmt"># N.B.: The `/htc/` directory is excluded because IE 6, by default,</span>&#x000A;74: <span class="ruby-comment cmt"># refuses to run .htc files (e.g., TwinHelix's iepngfix.htc) from</span>&#x000A;75: <span class="ruby-comment cmt"># other domains, including CDN subdomains.</span>&#x000A;76: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">$1</span>&#x000A;77: <span class="ruby-node">&quot;url(#{(asset_host =~ /%d/) ? asset_host % (src.hash % 4) : asset_host}#{src})&quot;</span>&#x000A;78: <span class="ruby-keyword kw">end</span>&#x000A;79: <span class="ruby-keyword kw">end</span></pre>
135
135
  </div>
136
136
  </div>
137
137
  <div class='method public-class' id='method-M000012'>
@@ -58,11 +58,46 @@
58
58
  <tr class='top-aligned-row context-row'>
59
59
  <td class='context-item-name'>VENDORS</td>
60
60
  <td>=</td>
61
- <td class='context-item-value'>[ :jquery, :jquery_ui, :prototype, :scriptaculous, :mootools, :dojo, :swfobject, :yui, :ext_core ]</td>
61
+ <td class='context-item-value'>[ :jquery, :jquery_ui, :prototype, :scriptaculous, :mootools, :dojo, :swfobject, :yui, :ext_core, :webfont ]</td>
62
62
  <td>&nbsp;</td>
63
63
  <td class='context-item-desc'>
64
64
 
65
- A list of supported 3rd-party JavaScript plugin/vendor names.
65
+ A list of supported 3rd-party JavaScript plugin/vendor names. Homepages:
66
+
67
+ <ul>
68
+ <li><a href="http://jquery.com/">jQuery</a>
69
+
70
+ </li>
71
+ <li><a href="http://jqueryui.com/">jQuery UI</a>
72
+
73
+ </li>
74
+ <li><a href="http://www.prototypejs.org/">Prototype</a>
75
+
76
+ </li>
77
+ <li><a href="http://script.aculo.us/">script.aculo.us</a>
78
+
79
+ </li>
80
+ <li><a href="http://mootools.net/">MooTools</a>
81
+
82
+ </li>
83
+ <li><a href="http://dojotoolkit.org/">Dojo</a>
84
+
85
+ </li>
86
+ <li><a href="http://code.google.com/p/swfobject/">SWFObject</a>
87
+
88
+ </li>
89
+ <li><a href="http://developer.yahoo.com/yui/">YUI</a>
90
+
91
+ </li>
92
+ <li><a href="http://extjs.com/products/extcore/">Ext Core</a>
93
+
94
+ </li>
95
+ <li><a
96
+ href="http://code.google.com/apis/webfonts/docs/webfont_loader.html">WebFont
97
+ Loader</a>
98
+
99
+ </li>
100
+ </ul>
66
101
  </td>
67
102
  </tr>
68
103
  </table>
@@ -80,7 +115,8 @@
80
115
  <p>
81
116
  Accepts an item from VENDORS, and returns the URL at which that vendor
82
117
  asset can be found. The URL is either local (relative) or external
83
- depending on the environment configuration. Options:
118
+ depending on the environment configuration. If external, the URL points to
119
+ <a href="http://code.google.com/apis/ajaxlibs/">Google's CDN</a>. Options:
84
120
  </p>
85
121
  <dl>
86
122
  <dt>version</dt><dd>The vendor version, e.g., &#8216;1.4.0&#8217; for jQuery 1.4. By default,
@@ -94,7 +130,7 @@
94
130
  <a class='source-toggle' href='#' onclick="toggleCode('M000020-source'); return false">
95
131
  [show source]
96
132
  </a>
97
- <pre id='M000020-source'> <span class="ruby-comment cmt"># File lib/asset_hat/js/vendors.rb, line 25</span>&#x000A;25: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">source_for</span>(<span class="ruby-identifier">vendor</span>, <span class="ruby-identifier">options</span>={})&#x000A;26: <span class="ruby-identifier">vendor_config</span> =&#x000A;27: <span class="ruby-constant">AssetHat</span>.<span class="ruby-identifier">config</span>[<span class="ruby-value str">'js'</span>][<span class="ruby-value str">'vendors'</span>][<span class="ruby-identifier">vendor</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>&#x000A;28: <span class="ruby-identifier">use_local</span> = <span class="ruby-constant">ActionController</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">consider_all_requests_local</span>&#x000A;29: <span class="ruby-identifier">version</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:version</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">vendor_config</span>[<span class="ruby-value str">'version'</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>&#x000A;30: &#x000A;31: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">use_local</span>&#x000A;32: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">vendor_config</span>[<span class="ruby-value str">'remote_url'</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>&#x000A;33: <span class="ruby-keyword kw">end</span>&#x000A;34: &#x000A;35: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">src</span>.<span class="ruby-identifier">blank?</span>&#x000A;36: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">vendor</span>&#x000A;37: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:jquery</span>&#x000A;38: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;39: </span> <span class="ruby-node">&quot;#{['jquery', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;40: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/jquery/#{version}/jquery.min.js&quot;</span>&#x000A;41: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:jquery_ui</span>&#x000A;42: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;43: </span> <span class="ruby-node">&quot;#{['jquery-ui', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;44: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/jqueryui/#{version}/jquery-ui.min.js&quot;</span>&#x000A;45: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:prototype</span>&#x000A;46: <span class="ruby-comment cmt"># Prototype currently doesn't provide an official minified version.</span>&#x000A;47: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;48: </span> <span class="ruby-node">&quot;#{['prototype', version].compact.join('-')}.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;49: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/prototype/#{version}/prototype.js&quot;</span>&#x000A;50: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:scriptaculous</span>&#x000A;51: <span class="ruby-comment cmt"># script.aculo.us currently doesn't provide an official minified version.</span>&#x000A;52: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;53: </span> <span class="ruby-node">&quot;#{['scriptaculous', version].compact.join('-')}.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;54: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/scriptaculous/#{version}/scriptaculous.js&quot;</span>&#x000A;55: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:mootools</span>&#x000A;56: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;57: </span> <span class="ruby-node">&quot;#{['mootools', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;58: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/mootools/#{version}/mootools-yui-compressed.js&quot;</span>&#x000A;59: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:dojo</span>&#x000A;60: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;61: </span> <span class="ruby-node">&quot;#{['dojo', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;62: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/dojo/#{version}/dojo/dojo.xd.js&quot;</span>&#x000A;63: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:swfobject</span>&#x000A;64: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;65: </span> <span class="ruby-node">&quot;#{['swfobject', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;66: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/swfobject/#{version}/swfobject.js&quot;</span>&#x000A;67: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:yui</span>&#x000A;68: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;69: </span> <span class="ruby-node">&quot;#{['yui', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;70: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/yui/#{version}/build/yuiloader/yuiloader-min.js&quot;</span>&#x000A;71: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:ext_core</span>&#x000A;72: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;73: </span> <span class="ruby-node">&quot;#{['ext_core', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;74: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/ext-core/#{version}/ext-core.js&quot;</span>&#x000A;75: <span class="ruby-keyword kw">else</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt"># TODO: Write to log</span>&#x000A;76: <span class="ruby-keyword kw">end</span>&#x000A;77: <span class="ruby-keyword kw">end</span>&#x000A;78: &#x000A;79: <span class="ruby-identifier">src</span>&#x000A;80: <span class="ruby-keyword kw">end</span></pre>
133
+ <pre id='M000020-source'> <span class="ruby-comment cmt"># File lib/asset_hat/js/vendors.rb, line 40</span>&#x000A;40: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">source_for</span>(<span class="ruby-identifier">vendor</span>, <span class="ruby-identifier">options</span>={})&#x000A;41: <span class="ruby-identifier">vendor_config</span> =&#x000A;42: <span class="ruby-constant">AssetHat</span>.<span class="ruby-identifier">config</span>[<span class="ruby-value str">'js'</span>][<span class="ruby-value str">'vendors'</span>][<span class="ruby-identifier">vendor</span>.<span class="ruby-identifier">to_s</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>&#x000A;43: <span class="ruby-identifier">use_local</span> = <span class="ruby-constant">ActionController</span><span class="ruby-operator">::</span><span class="ruby-constant">Base</span>.<span class="ruby-identifier">consider_all_requests_local</span>&#x000A;44: <span class="ruby-identifier">version</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:version</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">vendor_config</span>[<span class="ruby-value str">'version'</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>&#x000A;45: &#x000A;46: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">use_local</span>&#x000A;47: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">vendor_config</span>[<span class="ruby-value str">'remote_url'</span>] <span class="ruby-keyword kw">rescue</span> <span class="ruby-keyword kw">nil</span>&#x000A;48: <span class="ruby-keyword kw">end</span>&#x000A;49: &#x000A;50: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">src</span>.<span class="ruby-identifier">blank?</span>&#x000A;51: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">vendor</span>&#x000A;52: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:jquery</span>&#x000A;53: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;54: </span> <span class="ruby-node">&quot;#{['jquery', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;55: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/jquery/#{version}/jquery.min.js&quot;</span>&#x000A;56: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:jquery_ui</span>&#x000A;57: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;58: </span> <span class="ruby-node">&quot;#{['jquery-ui', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;59: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/jqueryui/#{version}/jquery-ui.min.js&quot;</span>&#x000A;60: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:prototype</span>&#x000A;61: <span class="ruby-comment cmt"># Prototype currently doesn't provide an official minified version.</span>&#x000A;62: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;63: </span> <span class="ruby-node">&quot;#{['prototype', version].compact.join('-')}.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;64: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/prototype/#{version}/prototype.js&quot;</span>&#x000A;65: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:scriptaculous</span>&#x000A;66: <span class="ruby-comment cmt"># script.aculo.us currently doesn't provide an official minified version.</span>&#x000A;67: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;68: </span> <span class="ruby-node">&quot;#{['scriptaculous', version].compact.join('-')}.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;69: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/scriptaculous/#{version}/scriptaculous.js&quot;</span>&#x000A;70: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:mootools</span>&#x000A;71: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;72: </span> <span class="ruby-node">&quot;#{['mootools', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;73: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/mootools/#{version}/mootools-yui-compressed.js&quot;</span>&#x000A;74: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:dojo</span>&#x000A;75: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;76: </span> <span class="ruby-node">&quot;#{['dojo', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;77: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/dojo/#{version}/dojo/dojo.xd.js&quot;</span>&#x000A;78: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:swfobject</span>&#x000A;79: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;80: </span> <span class="ruby-node">&quot;#{['swfobject', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;81: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/swfobject/#{version}/swfobject.js&quot;</span>&#x000A;82: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:yui</span>&#x000A;83: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;84: </span> <span class="ruby-node">&quot;#{['yui', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;85: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/yui/#{version}/build/yuiloader/yuiloader-min.js&quot;</span>&#x000A;86: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:ext_core</span>&#x000A;87: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;88: </span> <span class="ruby-node">&quot;#{['ext_core', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;89: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/ext-core/#{version}/ext-core.js&quot;</span>&#x000A;90: <span class="ruby-keyword kw">when</span> <span class="ruby-identifier">:webfont</span>&#x000A;91: <span class="ruby-identifier">src</span> = <span class="ruby-identifier">use_local</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">version</span>.<span class="ruby-identifier">blank?</span> <span class="ruby-value">?&#x000A;92: </span> <span class="ruby-node">&quot;#{['webfont', version].compact.join('-')}.min.js&quot;</span> <span class="ruby-operator">:</span>&#x000A;93: <span class="ruby-node">&quot;http://ajax.googleapis.com/ajax/libs/webfont/#{version}/webfont.js&quot;</span>&#x000A;94: <span class="ruby-keyword kw">else</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt"># TODO: Write to log</span>&#x000A;95: <span class="ruby-keyword kw">end</span>&#x000A;96: <span class="ruby-keyword kw">end</span>&#x000A;97: &#x000A;98: <span class="ruby-identifier">src</span>&#x000A;99: <span class="ruby-keyword kw">end</span></pre>
98
134
  </div>
99
135
  </div>
100
136
  </div>
@@ -62,8 +62,9 @@
62
62
  <p>
63
63
  With Rails&#8217; default asset caching, <a
64
64
  href="AssetHat/CSS.html">CSS</a> and <a href="AssetHat/JS.html">JS</a> are
65
- concatenated (not even minified) the first time that bundle is requested.
66
- Not good enough. <a href="AssetHat.html">AssetHat</a> can automatically:
65
+ concatenated (not even minified) at runtime when that bundle is first
66
+ requested. Not good enough. <a href="AssetHat.html">AssetHat</a> can
67
+ automatically:
67
68
  </p>
68
69
  <ul>
69
70
  <li>Easily <b>minify</b> and <b>bundle</b> <a href="AssetHat/CSS.html">CSS</a>
@@ -109,10 +110,10 @@
109
110
  <li><a href="#M000007">cache?</a></li>
110
111
  <li><a href="#M000011">clear_html_cache</a></li>
111
112
  <li><a href="#M000004">config</a></li>
112
- <li><a href="#M000002">last_bundle_commit_id</a></li>
113
+ <li><a href="#M000003">last_bundle_commit_id</a></li>
113
114
  <li><a href="#M000001">last_commit_id</a></li>
114
115
  <li><a href="#M000008">min_filepath</a></li>
115
- <li><a href="#M000003">version</a></li>
116
+ <li><a href="#M000002">version</a></li>
116
117
  </ol>
117
118
  </div>
118
119
  <div id='section'>
@@ -338,8 +339,8 @@
338
339
  <pre id='M000004-source'> <span class="ruby-comment cmt"># File lib/asset_hat.rb, line 65</span>&#x000A;65: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">config</span>&#x000A;66: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">cache?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@config</span>.<span class="ruby-identifier">blank?</span>&#x000A;67: <span class="ruby-ivar">@config</span> = <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-constant">CONFIG_FILEPATH</span>, <span class="ruby-value str">'r'</span>))&#x000A;68: <span class="ruby-keyword kw">end</span>&#x000A;69: <span class="ruby-ivar">@config</span>&#x000A;70: <span class="ruby-keyword kw">end</span></pre>
339
340
  </div>
340
341
  </div>
341
- <div class='method public-class' id='method-M000002'>
342
- <a name='M000002'></a>
342
+ <div class='method public-class' id='method-M000003'>
343
+ <a name='M000003'></a>
343
344
  <div class='synopsis'>
344
345
  <span class='name'>last_bundle_commit_id</span>
345
346
  <span class='arguments'>(bundle, type)</span>
@@ -356,10 +357,10 @@
356
357
  </p>
357
358
  </div>
358
359
  <div class='source'>
359
- <a class='source-toggle' href='#' onclick="toggleCode('M000002-source'); return false">
360
+ <a class='source-toggle' href='#' onclick="toggleCode('M000003-source'); return false">
360
361
  [show source]
361
362
  </a>
362
- <pre id='M000002-source'> <span class="ruby-comment cmt"># File lib/asset_hat/vcs.rb, line 45</span>&#x000A;45: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last_bundle_commit_id</span>(<span class="ruby-identifier">bundle</span>, <span class="ruby-identifier">type</span>)&#x000A;46: <span class="ruby-comment cmt"># Process arguments</span>&#x000A;47: <span class="ruby-identifier">type</span> = <span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_sym</span>&#x000A;48: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">TYPES</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">type</span>)&#x000A;49: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown type \&quot;#{type}\&quot;; should be one of: #{TYPES.join(', ')}.&quot;</span>&#x000A;50: <span class="ruby-keyword kw">return</span>&#x000A;51: <span class="ruby-keyword kw">end</span>&#x000A;52: &#x000A;53: <span class="ruby-comment cmt"># Default to `{:css =&gt; {}, :js =&gt; {}}`</span>&#x000A;54: <span class="ruby-ivar">@last_bundle_commit_ids</span> <span class="ruby-operator">||=</span>&#x000A;55: <span class="ruby-constant">TYPES</span>.<span class="ruby-identifier">inject</span>({}) { <span class="ruby-operator">|</span><span class="ruby-identifier">hsh</span>, <span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hsh</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">t</span> =<span class="ruby-operator">&gt;</span> {}) }&#x000A;56: &#x000A;57: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@last_bundle_commit_ids</span>[<span class="ruby-identifier">type</span>][<span class="ruby-identifier">bundle</span>].<span class="ruby-identifier">blank?</span>&#x000A;58: <span class="ruby-identifier">dir</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">assets_dir</span>(<span class="ruby-identifier">type</span>)&#x000A;59: <span class="ruby-identifier">filepaths</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">bundle_filepaths</span>(<span class="ruby-identifier">bundle</span>, <span class="ruby-identifier">type</span>)&#x000A;60: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filepaths</span>.<span class="ruby-identifier">present?</span>&#x000A;61: <span class="ruby-ivar">@last_bundle_commit_ids</span>[<span class="ruby-identifier">type</span>][<span class="ruby-identifier">bundle</span>] = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last_commit_id</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">filepaths</span>)&#x000A;62: <span class="ruby-keyword kw">end</span>&#x000A;63: <span class="ruby-keyword kw">end</span>&#x000A;64: &#x000A;65: <span class="ruby-ivar">@last_bundle_commit_ids</span>[<span class="ruby-identifier">type</span>][<span class="ruby-identifier">bundle</span>]&#x000A;66: <span class="ruby-keyword kw">end</span></pre>
363
+ <pre id='M000003-source'> <span class="ruby-comment cmt"># File lib/asset_hat/vcs.rb, line 45</span>&#x000A;45: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last_bundle_commit_id</span>(<span class="ruby-identifier">bundle</span>, <span class="ruby-identifier">type</span>)&#x000A;46: <span class="ruby-comment cmt"># Process arguments</span>&#x000A;47: <span class="ruby-identifier">type</span> = <span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_sym</span>&#x000A;48: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">TYPES</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">type</span>)&#x000A;49: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown type \&quot;#{type}\&quot;; should be one of: #{TYPES.join(', ')}.&quot;</span>&#x000A;50: <span class="ruby-keyword kw">return</span>&#x000A;51: <span class="ruby-keyword kw">end</span>&#x000A;52: &#x000A;53: <span class="ruby-comment cmt"># Default to `{:css =&gt; {}, :js =&gt; {}}`</span>&#x000A;54: <span class="ruby-ivar">@last_bundle_commit_ids</span> <span class="ruby-operator">||=</span>&#x000A;55: <span class="ruby-constant">TYPES</span>.<span class="ruby-identifier">inject</span>({}) { <span class="ruby-operator">|</span><span class="ruby-identifier">hsh</span>, <span class="ruby-identifier">t</span><span class="ruby-operator">|</span> <span class="ruby-identifier">hsh</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">t</span> =<span class="ruby-operator">&gt;</span> {}) }&#x000A;56: &#x000A;57: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@last_bundle_commit_ids</span>[<span class="ruby-identifier">type</span>][<span class="ruby-identifier">bundle</span>].<span class="ruby-identifier">blank?</span>&#x000A;58: <span class="ruby-identifier">dir</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">assets_dir</span>(<span class="ruby-identifier">type</span>)&#x000A;59: <span class="ruby-identifier">filepaths</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">bundle_filepaths</span>(<span class="ruby-identifier">bundle</span>, <span class="ruby-identifier">type</span>)&#x000A;60: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">filepaths</span>.<span class="ruby-identifier">present?</span>&#x000A;61: <span class="ruby-ivar">@last_bundle_commit_ids</span>[<span class="ruby-identifier">type</span>][<span class="ruby-identifier">bundle</span>] = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last_commit_id</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">filepaths</span>)&#x000A;62: <span class="ruby-keyword kw">end</span>&#x000A;63: <span class="ruby-keyword kw">end</span>&#x000A;64: &#x000A;65: <span class="ruby-ivar">@last_bundle_commit_ids</span>[<span class="ruby-identifier">type</span>][<span class="ruby-identifier">bundle</span>]&#x000A;66: <span class="ruby-keyword kw">end</span></pre>
363
364
  </div>
364
365
  </div>
365
366
  <div class='method public-class' id='method-M000001'>
@@ -415,8 +416,8 @@
415
416
  <pre id='M000008-source'> <span class="ruby-comment cmt"># File lib/asset_hat.rb, line 124</span>&#x000A;124: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">min_filepath</span>(<span class="ruby-identifier">filepath</span>, <span class="ruby-identifier">extension</span>)&#x000A;125: <span class="ruby-identifier">filepath</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-node">/([^\.]*).#{extension}$/</span>, <span class="ruby-node">&quot;\\1.min.#{extension}&quot;</span>)&#x000A;126: <span class="ruby-keyword kw">end</span></pre>
416
417
  </div>
417
418
  </div>
418
- <div class='method public-class' id='method-M000003'>
419
- <a name='M000003'></a>
419
+ <div class='method public-class' id='method-M000002'>
420
+ <a name='M000002'></a>
420
421
  <div class='synopsis'>
421
422
  <span class='name'>version</span>
422
423
  <span class='arguments'>()</span>
@@ -427,10 +428,10 @@
427
428
  </p>
428
429
  </div>
429
430
  <div class='source'>
430
- <a class='source-toggle' href='#' onclick="toggleCode('M000003-source'); return false">
431
+ <a class='source-toggle' href='#' onclick="toggleCode('M000002-source'); return false">
431
432
  [show source]
432
433
  </a>
433
- <pre id='M000003-source'> <span class="ruby-comment cmt"># File lib/asset_hat/version.rb, line 3</span>&#x000A;3: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">version</span>&#x000A;4: <span class="ruby-identifier">data_filepath</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-keyword kw">__FILE__</span>), <span class="ruby-node">%w[.. .. VERSION.yml]</span>)&#x000A;5: <span class="ruby-identifier">data</span> = <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">data_filepath</span>, <span class="ruby-value str">'r'</span>))&#x000A;6: [<span class="ruby-identifier">:major</span>, <span class="ruby-identifier">:minor</span>, <span class="ruby-identifier">:patch</span>, <span class="ruby-identifier">:build</span>].&#x000A;7: <span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">data</span>[<span class="ruby-identifier">x</span>] }.<span class="ruby-identifier">reject</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:blank?</span>).<span class="ruby-identifier">join</span>(<span class="ruby-value str">'.'</span>)&#x000A;8: <span class="ruby-keyword kw">end</span></pre>
434
+ <pre id='M000002-source'> <span class="ruby-comment cmt"># File lib/asset_hat/version.rb, line 3</span>&#x000A;3: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">version</span>&#x000A;4: <span class="ruby-identifier">data_filepath</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-keyword kw">__FILE__</span>), <span class="ruby-node">%w[.. .. VERSION.yml]</span>)&#x000A;5: <span class="ruby-identifier">data</span> = <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">data_filepath</span>, <span class="ruby-value str">'r'</span>))&#x000A;6: [<span class="ruby-identifier">:major</span>, <span class="ruby-identifier">:minor</span>, <span class="ruby-identifier">:patch</span>, <span class="ruby-identifier">:build</span>].&#x000A;7: <span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">data</span>[<span class="ruby-identifier">x</span>] }.<span class="ruby-identifier">reject</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">:blank?</span>).<span class="ruby-identifier">join</span>(<span class="ruby-value str">'.'</span>)&#x000A;8: <span class="ruby-keyword kw">end</span></pre>
434
435
  </div>
435
436
  </div>
436
437
  </div>
data/doc/created.rid CHANGED
@@ -1 +1 @@
1
- Thu, 10 Jun 2010 11:23:18 -0400
1
+ Wed, 21 Jul 2010 11:52:26 -0400
@@ -31,13 +31,25 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:51:58 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
38
38
  <div id='text'>
39
39
  <div id='description'>
40
40
  <h1><a href="HISTORY.html">HISTORY</a></h1>
41
+ <h2>Version 0.2.1 (2010-07-21)</h2>
42
+ <ul>
43
+ <li>Added WebFont Loader to supported JS vendors.
44
+
45
+ </li>
46
+ <li>Stopped adding asset hosts to `url(/htc/...)` URLs because IE 6, by
47
+ default, refuses to run .htc files from other domains, including CDN
48
+ subdomains.
49
+
50
+ </li>
51
+ </ul>
52
+ <h2>Version 0.2.0 (2010-06-10)</h2>
41
53
  <ul>
42
54
  <li>Added support for loading many more JS vendors from Google&#8217;s CDN,
43
55
  including Prototype, MooTools, and SWFObject.
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -43,8 +43,8 @@
43
43
  </p>
44
44
  <p>
45
45
  With Rails&#8217; default asset caching, CSS and JS are concatenated (not
46
- even minified) the first time that bundle is requested. Not good enough. <a
47
- href="../classes/AssetHat.html">AssetHat</a> can automatically:
46
+ even minified) at runtime when that bundle is first requested. Not good
47
+ enough. <a href="../classes/AssetHat.html">AssetHat</a> can automatically:
48
48
  </p>
49
49
  <ul>
50
50
  <li>Easily <b>minify</b> and <b>bundle</b> CSS and JS on deploy to reduce file
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:52:16 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:22:45 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  <div class='last-update'>
33
33
  Last Update:
34
- <span class='datetime'>Thu Jun 10 11:23:10 -0400 2010</span>
34
+ <span class='datetime'>Wed Jul 21 11:50:30 -0400 2010</span>
35
35
  </div>
36
36
  </div>
37
37
  <div id='content'>
@@ -4344,7 +4344,7 @@
4344
4344
  { method: 'include_css', module: 'assethathelper', html: '<a href="classes/AssetHatHelper.html#M000023"><span class="method_name">include_css</span> <span class="module_name">(AssetHatHelper)</span></a>' },
4345
4345
  { method: 'include_js', module: 'assethathelper', html: '<a href="classes/AssetHatHelper.html#M000024"><span class="method_name">include_js</span> <span class="module_name">(AssetHatHelper)</span></a>' },
4346
4346
  { method: 'jsmin', module: 'assethat::js::engines', html: '<a href="classes/AssetHat/JS/Engines.html#M000022"><span class="method_name">jsmin</span> <span class="module_name">(AssetHat::JS::Engines)</span></a>' },
4347
- { method: 'last_bundle_commit_id', module: 'assethat', html: '<a href="classes/AssetHat.html#M000002"><span class="method_name">last_bundle_commit_id</span> <span class="module_name">(AssetHat)</span></a>' },
4347
+ { method: 'last_bundle_commit_id', module: 'assethat', html: '<a href="classes/AssetHat.html#M000003"><span class="method_name">last_bundle_commit_id</span> <span class="module_name">(AssetHat)</span></a>' },
4348
4348
  { method: 'last_commit_id', module: 'assethat', html: '<a href="classes/AssetHat.html#M000001"><span class="method_name">last_commit_id</span> <span class="module_name">(AssetHat)</span></a>' },
4349
4349
  { method: 'min_filepath', module: 'assethat', html: '<a href="classes/AssetHat.html#M000008"><span class="method_name">min_filepath</span> <span class="module_name">(AssetHat)</span></a>' },
4350
4350
  { method: 'min_filepath', module: 'assethat::css', html: '<a href="classes/AssetHat/CSS.html#M000012"><span class="method_name">min_filepath</span> <span class="module_name">(AssetHat::CSS)</span></a>' },
@@ -4352,7 +4352,7 @@
4352
4352
  { method: 'minify', module: 'assethat::js', html: '<a href="classes/AssetHat/JS.html#M000019"><span class="method_name">minify</span> <span class="module_name">(AssetHat::JS)</span></a>' },
4353
4353
  { method: 'minify', module: 'assethat::css', html: '<a href="classes/AssetHat/CSS.html#M000013"><span class="method_name">minify</span> <span class="module_name">(AssetHat::CSS)</span></a>' },
4354
4354
  { method: 'source_for', module: 'assethat::js::vendors', html: '<a href="classes/AssetHat/JS/Vendors.html#M000020"><span class="method_name">source_for</span> <span class="module_name">(AssetHat::JS::Vendors)</span></a>' },
4355
- { method: 'version', module: 'assethat', html: '<a href="classes/AssetHat.html#M000003"><span class="method_name">version</span> <span class="module_name">(AssetHat)</span></a>' },
4355
+ { method: 'version', module: 'assethat', html: '<a href="classes/AssetHat.html#M000002"><span class="method_name">version</span> <span class="module_name">(AssetHat)</span></a>' },
4356
4356
  { method: 'weak', module: 'assethat::js::engines', html: '<a href="classes/AssetHat/JS/Engines.html#M000021"><span class="method_name">weak</span> <span class="module_name">(AssetHat::JS::Engines)</span></a>' },
4357
4357
  { method: 'weak', module: 'assethat::css::engines', html: '<a href="classes/AssetHat/CSS/Engines.html#M000016"><span class="method_name">weak</span> <span class="module_name">(AssetHat::CSS::Engines)</span></a>' },
4358
4358
  ]
@@ -4438,7 +4438,7 @@
4438
4438
  <li><a href="classes/AssetHatHelper.html#M000023"><span class="method_name">include_css</span> <span class="module_name">(AssetHatHelper)</span></a></li>
4439
4439
  <li><a href="classes/AssetHatHelper.html#M000024"><span class="method_name">include_js</span> <span class="module_name">(AssetHatHelper)</span></a></li>
4440
4440
  <li><a href="classes/AssetHat/JS/Engines.html#M000022"><span class="method_name">jsmin</span> <span class="module_name">(AssetHat::JS::Engines)</span></a></li>
4441
- <li><a href="classes/AssetHat.html#M000002"><span class="method_name">last_bundle_commit_id</span> <span class="module_name">(AssetHat)</span></a></li>
4441
+ <li><a href="classes/AssetHat.html#M000003"><span class="method_name">last_bundle_commit_id</span> <span class="module_name">(AssetHat)</span></a></li>
4442
4442
  <li><a href="classes/AssetHat.html#M000001"><span class="method_name">last_commit_id</span> <span class="module_name">(AssetHat)</span></a></li>
4443
4443
  <li><a href="classes/AssetHat.html#M000008"><span class="method_name">min_filepath</span> <span class="module_name">(AssetHat)</span></a></li>
4444
4444
  <li><a href="classes/AssetHat/CSS.html#M000012"><span class="method_name">min_filepath</span> <span class="module_name">(AssetHat::CSS)</span></a></li>
@@ -4446,7 +4446,7 @@
4446
4446
  <li><a href="classes/AssetHat/JS.html#M000019"><span class="method_name">minify</span> <span class="module_name">(AssetHat::JS)</span></a></li>
4447
4447
  <li><a href="classes/AssetHat/CSS.html#M000013"><span class="method_name">minify</span> <span class="module_name">(AssetHat::CSS)</span></a></li>
4448
4448
  <li><a href="classes/AssetHat/JS/Vendors.html#M000020"><span class="method_name">source_for</span> <span class="module_name">(AssetHat::JS::Vendors)</span></a></li>
4449
- <li><a href="classes/AssetHat.html#M000003"><span class="method_name">version</span> <span class="module_name">(AssetHat)</span></a></li>
4449
+ <li><a href="classes/AssetHat.html#M000002"><span class="method_name">version</span> <span class="module_name">(AssetHat)</span></a></li>
4450
4450
  <li><a href="classes/AssetHat/JS/Engines.html#M000021"><span class="method_name">weak</span> <span class="module_name">(AssetHat::JS::Engines)</span></a></li>
4451
4451
  <li><a href="classes/AssetHat/CSS/Engines.html#M000016"><span class="method_name">weak</span> <span class="module_name">(AssetHat::CSS::Engines)</span></a></li>
4452
4452
  </ol>
data/lib/asset_hat/css.rb CHANGED
@@ -63,13 +63,16 @@ module AssetHat
63
63
  # <code>config.action_controller.asset_host</code> in
64
64
  # the app's <code>config/environments/production.rb</code>.
65
65
  #
66
- # An asset host is added to every asset URL in the CSS, e.g.,
66
+ # An asset host is added to every image URL in the CSS, e.g.,
67
67
  # <code>background: url(http\://assets2.example.com/images/foo.png)</code>;
68
68
  # if <code>%d</code> in the asset host, it is replaced with an arbitrary
69
69
  # number in 0-3, inclusive.
70
70
  def self.add_asset_hosts(css, asset_host)
71
71
  return if asset_host.blank?
72
- css.gsub(/url[\s]*\((\/(images|htc)\/[^)]+)\)/) do |match|
72
+ css.gsub(/url[\s]*\((\/images\/[^)]+)\)/) do |match|
73
+ # N.B.: The `/htc/` directory is excluded because IE 6, by default,
74
+ # refuses to run .htc files (e.g., TwinHelix's iepngfix.htc) from
75
+ # other domains, including CDN subdomains.
73
76
  src = $1
74
77
  "url(#{(asset_host =~ /%d/) ? asset_host % (src.hash % 4) : asset_host}#{src})"
75
78
  end
@@ -4,6 +4,18 @@ module AssetHat
4
4
  # plugin/framework/library vendors.
5
5
  module Vendors
6
6
  # A list of supported 3rd-party JavaScript plugin/vendor names.
7
+ # Homepages:
8
+ #
9
+ # * {jQuery}[http://jquery.com/]
10
+ # * {jQuery UI}[http://jqueryui.com/]
11
+ # * {Prototype}[http://www.prototypejs.org/]
12
+ # * {script.aculo.us}[http://script.aculo.us/]
13
+ # * {MooTools}[http://mootools.net/]
14
+ # * {Dojo}[http://dojotoolkit.org/]
15
+ # * {SWFObject}[http://code.google.com/p/swfobject/]
16
+ # * {YUI}[http://developer.yahoo.com/yui/]
17
+ # * {Ext Core}[http://extjs.com/products/extcore/]
18
+ # * {WebFont Loader}[http://code.google.com/apis/webfonts/docs/webfont_loader.html]
7
19
  VENDORS = [
8
20
  :jquery, :jquery_ui,
9
21
  :prototype, :scriptaculous,
@@ -11,12 +23,15 @@ module AssetHat
11
23
  :dojo,
12
24
  :swfobject,
13
25
  :yui,
14
- :ext_core
26
+ :ext_core,
27
+ :webfont
15
28
  ]
16
29
 
17
30
  # Accepts an item from VENDORS, and returns the URL at which that vendor
18
31
  # asset can be found. The URL is either local (relative) or external
19
- # depending on the environment configuration. Options:
32
+ # depending on the environment configuration. If external, the URL
33
+ # points to {Google's CDN}[http://code.google.com/apis/ajaxlibs/].
34
+ # Options:
20
35
  #
21
36
  # [version] The vendor version, e.g., '1.4.0' for jQuery 1.4. By
22
37
  # default, each vendor version is taken from
@@ -72,6 +87,10 @@ module AssetHat
72
87
  src = use_local || version.blank? ?
73
88
  "#{['ext_core', version].compact.join('-')}.min.js" :
74
89
  "http://ajax.googleapis.com/ajax/libs/ext-core/#{version}/ext-core.js"
90
+ when :webfont
91
+ src = use_local || version.blank? ?
92
+ "#{['webfont', version].compact.join('-')}.min.js" :
93
+ "http://ajax.googleapis.com/ajax/libs/webfont/#{version}/webfont.js"
75
94
  else nil # TODO: Write to log
76
95
  end
77
96
  end
data/lib/asset_hat.rb CHANGED
@@ -5,8 +5,8 @@ end
5
5
  # Your assets are covered.
6
6
  #
7
7
  # With Rails' default asset caching, CSS and JS are concatenated (not even
8
- # minified) the first time that bundle is requested. Not good enough. AssetHat
9
- # can automatically:
8
+ # minified) at runtime when that bundle is first requested. Not good enough.
9
+ # AssetHat can automatically:
10
10
  #
11
11
  # * Easily *minify* and *bundle* CSS and JS on deploy to reduce file sizes and
12
12
  # HTTP requests.
@@ -62,10 +62,10 @@ class AssetHatTest < ActiveSupport::TestCase
62
62
  )
63
63
  end
64
64
 
65
- should 'add .htc asset hosts' do
65
+ should 'not add .htc asset hosts' do
66
66
  asset_host = 'http://media%d.example.com'
67
67
  assert_match(
68
- /^p\{background:url\(http:\/\/media[\d]\.example\.com\/htc\/iepngfix.htc\)\}$/,
68
+ /^p\{background:url\(\/htc\/iepngfix.htc\)\}$/,
69
69
  AssetHat::CSS.add_asset_hosts(
70
70
  'p{background:url(/htc/iepngfix.htc)}', asset_host)
71
71
  )
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Ron DeVera
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-10 00:00:00 -04:00
18
+ date: 2010-07-21 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency