asset_hat 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.
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