assetify 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Assetfile CHANGED
@@ -2,4 +2,8 @@
2
2
  # Assetify Assetfile
3
3
  #
4
4
 
5
- rb "colored", "https://github.com/defunkt/colored/raw/master/lib/colored.rb", :to => "lib/assetify"
5
+ rb "colored", "https://github.com/defunkt/colored/raw/master/lib/colored.rb", :to => "lib/assetify/cli"
6
+
7
+ pkg "mobile", "void" do
8
+ js "other", 'other'
9
+ end
data/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  Assetify
2
2
  ========
3
3
 
4
- Downloads/updates assets. Any framework.
4
+ Downloads/updates assets. Any framework*.
5
+
6
+ * But if you're using sprockets/rails pipeline there's more sugar.
5
7
 
6
8
 
7
9
  Install
@@ -24,13 +26,32 @@ This will create a `Assetfile` if not found.
24
26
  Assetfile
25
27
  =========
26
28
 
27
- Like a `Gemfile`, but you choose the filetype (or extension) before:
29
+ Like a `Gemfile`, but with fewer chars. Only one actually.
30
+
31
+
32
+ Behold the 'a'
33
+ --------------
34
+
35
+ a "tipsy", "http://...tipsy.js"
36
+ a "tipsy", "http://...tipsy.css"
37
+ a "video", "http://...video.mpeg"
38
+
39
+
40
+ There's also an alias 'asset' for 'a', if you enjoy typing.
41
+
42
+
43
+ asset "tipsy", "http://...tipsy.js"
44
+
45
+
46
+
47
+ You can choose the filetype (or extension) before too:
28
48
 
29
49
  type "name", "url", <"version"> or <:options>
30
50
 
31
51
  js "jquery", "http://code.jquery.com/jquery-{VERSION}.min.js", "1.6"
32
52
  js "tipsy", "https://github.com/jaz303/tipsy/.../jquery.tipsy.js"
33
53
 
54
+
34
55
  Stylesheets:
35
56
 
36
57
  css "tipsy", "https://github.com/jaz303/tipsy/.../jquery.tipsy.css"
@@ -83,7 +104,7 @@ Files will be written with the namespace "fancy":
83
104
 
84
105
  You can pass :shallow => true to avoid the namespace:
85
106
 
86
- pkg "fancy", "http://to.tgz.or.zip", :shallow => true do
107
+ pkg "fancy", "http://to.tgz.or.zip", shallow: true do
87
108
 
88
109
  Results in:
89
110
 
@@ -102,8 +123,8 @@ dealing with pkgs:
102
123
 
103
124
  pkg "complexfw", "link" do
104
125
  js "complex.min.js"
105
- dir "images/", :to => "images/complexfw"
106
- # Another option, treat all as a type:
126
+ dir "images/", to: "images/complexfw"
127
+ # Another option, treat`em all as filetype:
107
128
  dir "src/", :as => :js
108
129
  end
109
130
 
@@ -116,24 +137,71 @@ that returns the *first match* inside the archive. Check out libarchive
116
137
  or the pkg.rb source for more info.
117
138
 
118
139
 
119
- Global 'a'
140
+ Sprockets
141
+ =========
142
+
143
+ Or The Rails 3.1+ Asset Pipeline.
144
+
145
+ Wouldn`t it be nice to bundle all those little dependencies and tiny
146
+ stylesheets to avoid extra includes, but, change the source on every
147
+ update...PITA. No worries:
148
+
149
+ CSS will be converted to sass, scss or erb (defaults), your choice.
150
+ And every path corrected to use the pipeline.
151
+
152
+ Jquery Mobile example:
153
+
154
+ pkg :mobile, "http://code.jquery.com....zip", shallow: true do
155
+ js "mobile", "mobile.js"
156
+ css "mobile", "mobile.css", :as => :sass
157
+ dir "images/*"
158
+ end
159
+
160
+ You just need:
161
+
162
+ //= require 'mobile'
163
+
164
+ On application.css and application.js.
165
+
166
+ Images will be in 'vendor/assets/mobile/*', and the paths inside
167
+ mobile.css corrected to 'image-url(mobile/*)', or <%%> if I`ve had
168
+ choose erb.
169
+
170
+ This means you can have any third party library in the format
171
+ you like, always up-to-date. Easy to copy and customize parts
172
+ of the code.
173
+
174
+
175
+ foo2bar
176
+ -------
177
+
178
+ You can convert your assets to coffescript, sass or scss:
179
+
180
+ js "fulib", "http....", :as => :coffee
181
+ css "1140", "http....", :as => :sass
182
+ css "1140", "http....", :as => :scss
183
+
184
+ Note: You do need aditional stuff for this.
185
+ Gem 'sass' and/or node`s 'js2coffee' (install via npm).
186
+
187
+
188
+ minimagick
120
189
  ----------
121
190
 
122
- If the link contains the file extension, say: 'fu.com/lib.js'
123
- You can use just 'a' to specify each asset:
191
+ Preprocess images is also possible:
124
192
 
125
193
 
126
- a "tipsy", "http://...tipsy.js"
127
- a "tipsy", "http://...tipsy.css"
128
- a "video", "http://...video.mpeg"
194
+ png "logo", "http....", :as => :jpg, :quality => 75
129
195
 
130
196
 
197
+ Note: Need to install 'imagemagick' and 'minimagick' gem for this.
198
+
131
199
  Versions
132
200
  --------
133
201
 
134
- Assetify first recognizes the file as text or binary.
135
- If the file is human readable, try a X.X.Xxx pattern match
136
- that if found, is used, otherwise use md5sum.
202
+ Assetify first tries to recognizes the file as text or binary.
203
+ If the file is human readable, try a (X.X.Xxx?) pattern match
204
+ that if found it`s used. Otherwise go for md5sum.
137
205
 
138
206
 
139
207
  Other
@@ -142,7 +210,7 @@ Other
142
210
  Set a different location per file:
143
211
 
144
212
 
145
- js "other", "http://lib.../other.js", :to => "different/path"
213
+ js "other", "http://lib.../other.js", to: "different/path"
146
214
 
147
215
  Filename will be: ./different/path/other.js
148
216
  This works for namespaces too, change "to" with "ns".
@@ -174,6 +242,13 @@ Out of the box support for rails 3.1, defaults to 'vendor/assets'.
174
242
  Rails 3.0< users should change the options as above.
175
243
 
176
244
 
245
+ Emacs
246
+ -----
247
+
248
+ Use ruby syntax for nice colors:
249
+
250
+ (add-to-list 'auto-mode-alist '("Assetfile$" . ruby-mode))
251
+
177
252
 
178
253
  Contributing
179
254
  ------------
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 2.0.0
data/assetify.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{assetify}
8
- s.version = "1.0.0"
8
+ s.version = "2.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marcos Piccinini", "Rafael Barbosa"]
12
- s.date = %q{2011-09-30}
12
+ s.date = %q{2011-10-05}
13
13
  s.default_executable = %q{assetify}
14
14
  s.description = %q{Downloads/updates assets based on an Assetfile. Any framework.}
15
15
  s.email = %q{x@nofxx.com}
@@ -52,6 +52,7 @@ Gem::Specification.new do |s|
52
52
  "spec/assetify_spec.rb",
53
53
  "spec/fixtures/complex.tgz",
54
54
  "spec/fixtures/fancy.tgz",
55
+ "spec/fixtures/mobile.css",
55
56
  "spec/fixtures/sassify.css",
56
57
  "spec/spec_helper.rb"
57
58
  ]
@@ -62,7 +63,7 @@ A ------------------------------------------------------------ A
62
63
 
63
64
  * A S S E T I F Y *
64
65
 
65
- Thank you for installing assetify-1.0.0.
66
+ Thank you for installing assetify-2.0.0.
66
67
 
67
68
  Here is a few optional gems:
68
69
 
@@ -7,7 +7,7 @@ module Assetify
7
7
 
8
8
  class Asset
9
9
  include Helpers
10
- attr_accessor :type, :name, :url, :ns, :pkg, :ver, :ext
10
+ attr_accessor :type, :name, :url, :ns, :pkg, :ver, :ext, :as
11
11
 
12
12
  def initialize(type, name, url, ver = nil, params={})
13
13
  raise "NoType" unless type
@@ -21,14 +21,15 @@ module Assetify
21
21
  @ext = @type == :img ? find_ext_for(url) : @type
22
22
  end
23
23
 
24
- @pkg = params[:pkg]
25
- @ns = params[:ns] || ""
26
- @to = params[:to] || ""
24
+ @pkg, @as, @ns = params[:pkg], params[:as], params[:ns]
25
+ @to = params[:to] || ""
27
26
  end
28
27
 
29
28
  def filename
30
29
  return @filename if @filename
31
30
  @filename = "#{name}.#{ext}"
31
+ @filename += ".#{as}" if as
32
+ @filename
32
33
  end
33
34
 
34
35
  def find_ext_for file
@@ -66,8 +67,14 @@ module Assetify
66
67
  end
67
68
 
68
69
  def data
70
+ return @data if @data
69
71
  # Get data, from a pkg or download directly
70
- @data ||= @pkg ? @pkg.get(url, :force).values.first : get_data(url)
72
+ @data = @pkg ? @pkg.get(url, :force).values.first : get_data(url)
73
+
74
+ # Compile/fix paths if asked to
75
+ @data = Pathfix.new(@data, @as, @ns).fix if @as
76
+
77
+ @data
71
78
  end
72
79
 
73
80
  #
@@ -134,7 +141,10 @@ module Assetify
134
141
  end
135
142
 
136
143
  def filter params
137
- all.select { |a| "#{a.name}#{a.pkg}" =~ /#{params}/ }
144
+ all.select do |a|
145
+ blob = "#{a.name}#{a.pkg.name if a.pkg}"
146
+ blob.include? params
147
+ end
138
148
  end
139
149
 
140
150
  end
@@ -1,39 +1,42 @@
1
- module Path
2
- class Findr
1
+ module Assetify
2
+ class Pathfix
3
3
 
4
- def initialize chunk, ns = nil
5
- @chunk = chunk
6
- @ns = ns
7
- matches
4
+ def initialize chunk, as = :erb, ns = nil
5
+ @chunk, @as, @ns = chunk, as, ns
6
+ @images = scan_images
8
7
  end
9
8
 
10
- def sass?
11
- true
9
+ def images
10
+ @images
11
+ end
12
+
13
+ def scan_images
14
+ @chunk.scan(/url\(([a-zA-Z0-9\/\_\-\.]*\.\w+)\)/xo).flatten
12
15
  end
13
16
 
14
17
  def replace src
15
- if sass?
16
- "image-url('#{@ns}#{src}')"
18
+ fpath = @ns ? "#{@ns}/#{src}" : src
19
+ if @as == :erb
20
+ "url('<%= image_path('#{fpath}') %>')"
17
21
  else
18
- "url('<%= image_path(#{@ns}#{src}) %>)"
22
+ "image-url('#{fpath}')"
19
23
  end
20
24
  end
21
25
 
22
- def matches
23
- @images = @chunk.scan(/url\((.*)\)/).flatten
24
- end
25
-
26
- def images
27
- @images
26
+ def fix
27
+ @images.each do |path|
28
+ @chunk["url(#{path})"] = replace path.split("/").last
29
+ end
30
+ @as != :erb ? tmpl_chunk : @chunk
28
31
  end
29
32
 
30
- def fixed
31
- sprocketized = @chunk
32
- @images.each do |uri|
33
- sprocketized["url(#{uri})"] = replace uri.split("/").last
34
- #gsub(/\.|\//, "")
33
+ def tmpl_chunk
34
+ begin
35
+ require 'sass/css'
36
+ Sass::CSS.new(@chunk).render(@as)
37
+ rescue Sass::SyntaxError => e
38
+ @error = e
35
39
  end
36
- sprocketized
37
40
  end
38
41
 
39
42
  end
@@ -8,14 +8,14 @@ module Assetify
8
8
 
9
9
  PATH = "/tmp/"
10
10
 
11
- def initialize(name, url)
11
+ def initialize(name, url, opts={})
12
12
  @name = name
13
13
  @pkgname = url.split("/").last
14
14
  @url = url
15
15
  end
16
16
 
17
17
  def path
18
- File.join(PATH, name)
18
+ File.join(PATH, name.to_s)
19
19
  end
20
20
 
21
21
  def fullpath
@@ -37,12 +37,15 @@ module Assetify
37
37
 
38
38
  def get(file, force = false)
39
39
  # Download and write to tmp if force or doensnt exists
40
- write(get_data(url)) if force || !File.exists?(File.join(fullpath))
40
+ write(get_data(url)) if force || !File.exists?(fullpath)
41
41
  # Better way when multiple are found....?
42
42
  read_from_pkg(file)
43
43
  end
44
44
 
45
- def unpack_to_vendor
45
+ #
46
+ # Used when pkgs doesn't provide a block, just dump it somewhere.
47
+ #
48
+ def unpack_all
46
49
  read_from_pkg.each do |file, data|
47
50
  fname, *dir = file =~ /\/$/ ? [nil, file] : file.split("/").reverse
48
51
  dir = File.join Opt[:vendor], dir.reverse.join("/")
data/lib/assetify/cli.rb CHANGED
@@ -63,7 +63,9 @@ module Assetify
63
63
  def work!(params)
64
64
  start = Time.now
65
65
  Assetfile.find
66
- puts "Assetify - #{Asset.all.size} assets"
66
+ print "Assetify - #{Asset.all.size} assets"
67
+ print " | #{params[1..-1].join(' . ')}" if params[1]
68
+ puts " |"
67
69
  bar
68
70
  work_on params
69
71
  bar
data/lib/assetify/dsl.rb CHANGED
@@ -2,7 +2,7 @@ module Assetify
2
2
 
3
3
  class DSL
4
4
  attr_reader :assets
5
-
5
+
6
6
  #
7
7
  # Makes a pkg, a gz/tar/zip asset/
8
8
  #
@@ -14,15 +14,16 @@ module Assetify
14
14
  if block_given?
15
15
  set_namespace name unless opts[:shallow]
16
16
  instance_exec &block
17
- @ns = @pkg = nil
18
17
  else
19
- @pkg.unpack_to_vendor
18
+ @pkg.unpack_all
20
19
  end
21
20
  assets
21
+ ensure
22
+ @ns = @pkg = nil
22
23
  end
23
24
 
24
25
  #
25
- # Makes a group, a namspace for the assets.
26
+ # Makes a group, a namespace for the assets.
26
27
  #
27
28
  # group :foo do
28
29
  # end
@@ -32,17 +33,26 @@ module Assetify
32
33
  instance_exec &block
33
34
  @ns = nil
34
35
  assets
36
+ ensure
37
+ @ns = nil
35
38
  end
36
39
 
37
- def dir regex, to
38
- to = to[:to]
40
+ #
41
+ # Makes assets out of the entire directory
42
+ #
43
+ # pkg :foo do
44
+ # dir "images/*"
45
+ # dir "images/*jpg"
46
+ # end
47
+ #
48
+ def dir regex, params = {}
49
+ to = params[:to]
39
50
  if @pkg
40
51
  @pkg.get(regex).each do |path, data|
41
52
  next if path =~ /\/$/ # dont let dirs get in... ugly
42
53
  ext, *name = path.split(".").reverse
43
54
  name = name.reverse.join(".").split("/").last
44
- @assets ||= []
45
- @assets << Asset.new(ext, name, path, nil, { :pkg => @pkg , :to => to } )
55
+ create_asset(ext, name, path, nil, { :to => to } )
46
56
  end
47
57
  end
48
58
  end
@@ -55,11 +65,10 @@ module Assetify
55
65
  #
56
66
  def method_missing method, name, uri, *params
57
67
  params, ver = params.partition { |param| param.is_a?(Hash) }
58
- opts = {:ns => @ns, :pkg => @pkg}
68
+ opts = {}
59
69
  params.each { |hsh| opts.merge! hsh }
60
70
  ver = ver[0]
61
- @assets ||= []
62
- @assets << Asset.new(method.to_sym, name, uri, ver, opts)
71
+ create_asset(method.to_sym, name, uri, ver, opts)
63
72
  end
64
73
 
65
74
  #
@@ -71,9 +80,10 @@ module Assetify
71
80
  extension = url.split(".").last
72
81
  send(extension, name, url)
73
82
  end
83
+ alias :asset :a
74
84
 
75
85
  #
76
- # Create Assetfile assets path setters
86
+ # Creates Assetfile assets path setters
77
87
  #
78
88
  # javascript "new/path"
79
89
  # ...
@@ -83,6 +93,18 @@ module Assetify
83
93
  end
84
94
  end
85
95
 
96
+ private
97
+
98
+ #
99
+ # Helper to create asset with correct options
100
+ #
101
+ def create_asset(ext, name, path, ver, opts = {})
102
+ opts.merge! ({pkg: @pkg, ns: @ns })
103
+ @assets ||= []
104
+ @assets << Asset.new(ext, name, path, ver, opts)
105
+ end
106
+
107
+
86
108
  def set_namespace name
87
109
  @ns = @ns.nil? ? name : "#{@ns}/#{name}"
88
110
  end
@@ -42,21 +42,23 @@ module Assetify
42
42
  when Net::HTTPSuccess then @data = response
43
43
  when Net::HTTPRedirection then download(redirect_url(response), limit - 1)
44
44
  else
45
- puts "response code: #{response.code}!"
45
+ puts " - fail - response code: #{response.code}!"
46
46
  response.error!
47
+ nil
47
48
  end
48
49
  end
49
50
 
50
51
  def get_data(str)
51
52
  @data = if str =~ /http/
52
- download(str).body
53
+ data = download(str)
54
+ data ? data.body : nil
53
55
  else
54
56
  File.open(str)
55
57
  end
56
58
  end
57
59
 
58
60
  def write binary
59
- FileUtils.mkdir_p path unless Dir.exists?(path)
61
+ FileUtils.mkdir_p path unless Dir.exists?(path)
60
62
  File.open(fullpath, "w") { |f| f.puts(binary) }
61
63
  end
62
64
 
@@ -1,3 +1,3 @@
1
1
  module Assetify
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -28,6 +28,43 @@ describe Asset do
28
28
  as.instance_variable_set "@data", "\u001F\x8B\b\u0000\xF5\u0000"
29
29
  as.print_version.should eql("v537c8396f74 ")
30
30
  end
31
+
32
+ end
33
+
34
+ describe "Namespaced" do
35
+
36
+ let (:as) { Asset.new :js, "sweet", "http://candy.js", nil, :ns => "spacemonkey" }
37
+
38
+ it "should have name" do
39
+ as.ns.should eql("spacemonkey")
40
+ end
41
+
42
+ end
43
+
44
+ describe "On Package" do
45
+
46
+ let (:as) { Asset.new :js, "sweet", "http://candy.js", nil, :pkg => "firefly" }
47
+
48
+ it "should have name" do
49
+ as.pkg.should eql("firefly")
50
+ end
51
+
52
+ end
53
+
54
+ describe "Class methods" do
55
+
56
+ it "should have all assets on hand" do
57
+ Asset.all.should have(2).assets
58
+ end
59
+
60
+ it "should find assets" do
61
+ Asset.filter("color").should have(1).assets
62
+ end
63
+
64
+ it "should find assets by pkg" do
65
+ Asset.filter("mobile").should have(1).assets
66
+ end
67
+
31
68
  end
32
69
 
33
70
  end
@@ -38,6 +38,12 @@ describe DSL do
38
38
  a.fullpath.should eql("vendor/assets/javascripts/foo.js")
39
39
  end
40
40
 
41
+ it "should parse js with global 'asset' alias too" do
42
+ a = Assetify::DSL.parse("asset 'foo', 'foolink.js'")[0]
43
+ a.should be_an Asset
44
+ a.fullpath.should eql("vendor/assets/javascripts/foo.js")
45
+ end
46
+
41
47
  it "should parse css with global 'a' keyword" do
42
48
  a = Assetify::DSL.parse("a 'foo', 'http://w.foolink/c/?foo.css'")[0]
43
49
  a.should be_an Asset
@@ -63,6 +69,22 @@ describe DSL do
63
69
  a.name.should eql("jnice")
64
70
  end
65
71
 
72
+ describe "Templates and Pathfixes" do
73
+
74
+ it "should parse css to erb nicely" do
75
+ a = Assetify::DSL.parse("css 'foo', 'foolink', :as => :erb")[0]
76
+ a.should be_an Asset
77
+ a.fullpath.should eql("vendor/assets/stylesheets/foo.css.erb")
78
+ end
79
+
80
+ it "should parse css to sass nicely" do
81
+ a = Assetify::DSL.parse("css 'foo', 'foolink', :as => :sass")[0]
82
+ a.should be_an Asset
83
+ a.fullpath.should eql("vendor/assets/stylesheets/foo.css.sass")
84
+ end
85
+
86
+ end
87
+
66
88
  describe "Group Assets" do
67
89
 
68
90
  it "should group and use a namespace" do
@@ -99,6 +121,12 @@ describe DSL do
99
121
  a[0].fullpath.should eql("vendor/assets/javascripts/fancy/foo.js")
100
122
  end
101
123
 
124
+ it "should use name as namespace too" do
125
+ a = Assetify::DSL.parse "pkg 'complex', '/tmp/complex/complex.tgz' do; dir 'images/*'; end"
126
+ a.should have(3).assets
127
+ a[0].fullpath.should eql("vendor/assets/images/complex/two.png")
128
+ end
129
+
102
130
  it "should accept shallow too" do
103
131
  a = Assetify::DSL.parse "pkg 'fancy', 'http://fancy.zip', :shallow => true do; js 'foo', 'foolink'; end"
104
132
  a[0].should be_an Asset
@@ -113,7 +141,7 @@ describe DSL do
113
141
 
114
142
  it "should unpack to vendor if no block given" do
115
143
  Pkg.should_receive(:new).with("fancy", "http://fancy.zip").and_return(mp = mock(Pkg))
116
- mp.should_receive :unpack_to_vendor
144
+ mp.should_receive :unpack_all
117
145
  a = Assetify::DSL.parse "pkg 'fancy', 'http://fancy.zip'"
118
146
  end
119
147
  end
@@ -1,24 +1,83 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
- describe Path do
3
+ describe Pathfix do
4
4
 
5
5
  it "should spawn!" do
6
- f = Path::Findr.new "fu"
7
- f.should be_instance_of Path::Findr
6
+ f = Pathfix.new "fu"
7
+ f.should be_instance_of Assetify::Pathfix
8
8
  end
9
9
 
10
- describe "Instantiated" do
10
+ describe "Simple test ERB" do
11
11
 
12
- let (:f) { Path::Findr.new ".tipsy { padding: 5px; background-image: url(../images/tipsy.gif); }" }
12
+ let (:f) { Pathfix.new ".tipsy { padding: 5px; background-image: url(../images/tipsy.gif); }" }
13
13
 
14
14
  it "should detect images" do
15
15
  f.images.should eql(["../images/tipsy.gif"])
16
16
  end
17
17
 
18
18
  it "should change css" do
19
- f.fixed.should eql ".tipsy { padding: 5px; background-image: url(../images/tipsy.gif); }"
19
+ f.fix.should eql ".tipsy { padding: 5px; background-image: url('<%= image_path('tipsy.gif') %>'); }"
20
20
  end
21
21
 
22
22
  end
23
23
 
24
+ describe "Simple test namespaced ERB" do
25
+
26
+ let (:f) { Pathfix.new ".tipsy { padding: 5px; background-image: url(../images/tipsy.gif); }", :erb, :nicelib }
27
+
28
+ it "should detect images" do
29
+ f.images.should eql(["../images/tipsy.gif"])
30
+ end
31
+
32
+ it "should change css" do
33
+ f.fix.should eql ".tipsy { padding: 5px; background-image: url('<%= image_path('nicelib/tipsy.gif') %>'); }"
34
+ end
35
+
36
+ end
37
+
38
+
39
+ describe "Multiple assets test sass" do
40
+
41
+ let (:f) { Pathfix.new "div.rating-cancel,div.rating-cancel a{background:url(delete.gif) no-repeat 0 -16px}
42
+ div.star-rating,div.star-rating a{background:url(star.gif) no-repeat 0 0px}", :sass }
43
+
44
+ it "should detect images" do
45
+ f.images.should eql(["delete.gif", "star.gif"])
46
+ end
47
+
48
+ it "should change css" do
49
+ f.fix.should eql "div\n &.rating-cancel\n background: image-url(\"delete.gif\") no-repeat 0 -16px\n a\n background: image-url(\"delete.gif\") no-repeat 0 -16px\n &.star-rating\n background: image-url(\"star.gif\") no-repeat 0 0px\n a\n background: image-url(\"star.gif\") no-repeat 0 0px\n"
50
+ end
51
+
52
+ end
53
+
54
+ describe "Multiple assets test scss" do
55
+
56
+ let (:f) { Pathfix.new "div.rating-cancel,div.rating-cancel a{background:url(delete.gif) no-repeat 0 -16px}
57
+ div.star-rating,div.star-rating a{background:url(star.gif) no-repeat 0 0px}", :scss }
58
+
59
+ it "should detect images" do
60
+ f.images.should eql(["delete.gif", "star.gif"])
61
+ end
62
+
63
+ it "should change css" do
64
+ f.fix.should eql "div {\n &.rating-cancel {\n background: image-url(\"delete.gif\") no-repeat 0 -16px;\n a {\n background: image-url(\"delete.gif\") no-repeat 0 -16px; } }\n &.star-rating {\n background: image-url(\"star.gif\") no-repeat 0 0px;\n a {\n background: image-url(\"star.gif\") no-repeat 0 0px; } } }\n"
65
+ end
66
+
67
+ end
68
+
69
+ describe "Multiple assets test big css minified file" do
70
+
71
+ let (:f) { Pathfix.new File.read("#{File.dirname(__FILE__)}/../fixtures/mobile.css"), :scss }
72
+
73
+ it "should detect images" do
74
+ f.images.should eql(["images/icons-18-white.png", "images/icons-18-black.png", "images/icons-36-white.png", "images/icons-36-black.png", "images/ajax-loader.png"])
75
+ end
76
+
77
+ # it "should change css" do
78
+ # f.fix.should match "background-image: image-url(\"images/icons-36-white.png\")"
79
+ # end
80
+
81
+ end
82
+
24
83
  end
@@ -26,6 +26,16 @@ describe Pkg do
26
26
  as.get("fancy/fancy.css").should eql("fancy/fancy.css" => "// Fancy css!\n\n#foo {\n padding: 10px;\n}\n")
27
27
  end
28
28
 
29
+ it "should get file without path from unpack" do
30
+ as = Pkg.new "fancy", "/tmp/fancy/fancy.tgz"
31
+ as.get("fancy.css").should eql("fancy/fancy.css" => "// Fancy css!\n\n#foo {\n padding: 10px;\n}\n")
32
+ end
33
+
34
+ it "should get file from part of the name" do
35
+ as = Pkg.new "fancy", "/tmp/fancy/fancy.tgz"
36
+ as.get("cy.css").should eql("fancy/fancy.css" => "// Fancy css!\n\n#foo {\n padding: 10px;\n}\n")
37
+ end
38
+
29
39
  it "should read all assets within pkg" do
30
40
  as = Pkg.new "complex", "/tmp/complex/complex.tgz"
31
41
  as.read_from_pkg.should be_a Hash #(hash_including "complex/images/3.png"=>"Im a png image..3\n")
@@ -33,13 +43,17 @@ describe Pkg do
33
43
 
34
44
  it "should unpack all to vendor" do
35
45
  as = Pkg.new "complex", "/tmp/complex/complex.tgz"
36
- as.unpack_to_vendor #.should be_a Hash #(hash_including "complex/images/3.png"=>"Im a png image..3\n")
46
+ as.unpack_all #.should be_a Hash #(hash_including "complex/images/3.png"=>"Im a png image..3\n")
37
47
  File.exists?("public/vendor/complex/src/main.js").should be_true
38
48
  `rm -rf vendor/assets/vendor`
39
49
  end
40
50
 
41
- it "should shallow paths" do
51
+ it "should download pkg only once" do
52
+ as = Pkg.new "fancy", "/tmp/fancy/fancy.tgz"
42
53
 
54
+ as.should_not_receive(:write)
43
55
 
56
+ as.get("fancy/fancy.css")
57
+ as.get("fancy/fancy.css")
44
58
  end
45
59
  end
@@ -0,0 +1,309 @@
1
+ /*!
2
+ * jQuery Mobile v1.0rc1
3
+ * http://jquerymobile.com/
4
+ *
5
+ * Copyright 2010, jQuery Project
6
+ * Dual licensed under the MIT or GPL Version 2 licenses.
7
+ * http://jquery.org/license
8
+ *//*!
9
+ * jQuery Mobile Framework
10
+ * Copyright (c) jQuery Project
11
+ * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
12
+ */.ui-bar-a{border:1px solid #2a2a2a;background:#111;color:#fff;font-weight:bold;text-shadow:0 -1px 1px
13
+ #000;background-image:-webkit-gradient(linear,left top,left
14
+ bottom,from(#3c3c3c),to(#111));background-image:-webkit-linear-gradient(top,#3c3c3c,#111);background-image:-moz-linear-gradient(top,#3c3c3c,#111);background-image:-ms-linear-gradient(top,#3c3c3c,#111);background-image:-o-linear-gradient(top,#3c3c3c,#111);background-image:linear-gradient(top,#3c3c3c,#111)}.ui-bar-a,.ui-bar-a
15
+ input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Helvetica,Arial,sans-serif}.ui-bar-a
16
+ .ui-link-inherit{color:#fff}.ui-bar-a .ui-link{color:#7cc4e7;font-weight:bold}.ui-body-a{border:1px solid
17
+ #2a2a2a;background:#222;color:#fff;text-shadow:0 1px 0 #000;font-weight:normal;background-image:-webkit-gradient(linear,left top,left
18
+ bottom,from(#666),to(#222));background-image:-webkit-linear-gradient(top,#666,#222);background-image:-moz-linear-gradient(top,#666,#222);background-image:-ms-linear-gradient(top,#666,#222);background-image:-o-linear-gradient(top,#666,#222);background-image:linear-gradient(top,#666,#222)}.ui-body-a,.ui-body-a
19
+ input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Helvetica,Arial,sans-serif}.ui-body-a
20
+ .ui-link-inherit{color:#fff}.ui-body-a
21
+ .ui-link{color:#2489ce;font-weight:bold}.ui-br{border-bottom:#828282;border-bottom:rgba(130,130,130,.3);border-bottom-width:1px;border-bottom-style:solid}.ui-btn-up-a{border:1px
22
+ solid #222;background:#333;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #000;background-image:-webkit-gradient(linear,left top,left
23
+ bottom,from(#555),to(#333));background-image:-webkit-linear-gradient(top,#555,#333);background-image:-moz-linear-gradient(top,#555,#333);background-image:-ms-linear-gradient(top,#555,#333);background-image:-o-linear-gradient(top,#555,#333);background-image:linear-gradient(top,#555,#333)}.ui-btn-up-a
24
+ a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #000;background:#444;font-weight:bold;color:#fff;text-shadow:0 -1px 1px
25
+ #000;background-image:-webkit-gradient(linear,left top,left
26
+ bottom,from(#666),to(#444));background-image:-webkit-linear-gradient(top,#666,#444);background-image:-moz-linear-gradient(top,#666,#444);background-image:-ms-linear-gradient(top,#666,#444);background-image:-o-linear-gradient(top,#666,#444);background-image:linear-gradient(top,#666,#444)}.ui-btn-hover-a
27
+ a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #000;background:#3d3d3d;font-weight:bold;color:#fff;text-shadow:0 -1px 1px
28
+ #000;background-image:-webkit-gradient(linear,left top,left
29
+ bottom,from(#333),to(#5a5a5a));background-image:-webkit-linear-gradient(top,#333,#5a5a5a);background-image:-moz-linear-gradient(top,#333,#5a5a5a);background-image:-ms-linear-gradient(top,#333,#5a5a5a);background-image:-o-linear-gradient(top,#333,#5a5a5a);background-image:linear-gradient(top,#333,#5a5a5a)}.ui-btn-down-a
30
+ a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-b{border:1px
31
+ solid #456f9a;background:#5e87b0;color:#fff;font-weight:bold;text-shadow:0 -1px 1px #254f7a;background-image:-webkit-gradient(linear,left
32
+ top,left
33
+ bottom,from(#81a8ce),to(#5e87b0));background-image:-webkit-linear-gradient(top,#81a8ce,#5e87b0);background-image:-moz-linear-gradient(top,#81a8ce,#5e87b0);background-image:-ms-linear-gradient(top,#81a8ce,#5e87b0);background-image:-o-linear-gradient(top,#81a8ce,#5e87b0);background-image:linear-gradient(top,#81a8ce,#5e87b0)}.ui-bar-b,.ui-bar-b
34
+ input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Helvetica,Arial,sans-serif}.ui-bar-b
35
+ .ui-link-inherit{color:#fff}.ui-bar-b .ui-link{color:#7cc4e7;font-weight:bold}.ui-body-b{border:1px solid
36
+ #c6c6c6;background:#ccc;color:#333;text-shadow:0 1px 0 #fff;font-weight:normal;background-image:-webkit-gradient(linear,left top,left
37
+ bottom,from(#e6e6e6),to(#ccc));background-image:-webkit-linear-gradient(top,#e6e6e6,#ccc);background-image:-moz-linear-gradient(top,#e6e6e6,#ccc);background-image:-ms-linear-gradient(top,#e6e6e6,#ccc);background-image:-o-linear-gradient(top,#e6e6e6,#ccc);background-image:linear-gradient(top,#e6e6e6,#ccc)}.ui-body-b,.ui-body-b
38
+ input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Helvetica,Arial,sans-serif}.ui-body-b
39
+ .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-b{border:1px solid
40
+ #145072;background:#2567ab;font-weight:bold;color:#fff;text-shadow:0 -1px 1px #145072;background-image:-webkit-gradient(linear,left top,left
41
+ bottom,from(#5f9cc5),to(#396b9e));background-image:-webkit-linear-gradient(top,#5f9cc5,#396b9e);background-image:-moz-linear-gradient(top,#5f9cc5,#396b9e);background-image:-ms-linear-gradient(top,#5f9cc5,#396b9e);background-image:-o-linear-gradient(top,#5f9cc5,#396b9e);background-image:linear-gradient(top,#5f9cc5,#396b9e)}.ui-btn-up-b
42
+ a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #00516e;background:#4b88b6;font-weight:bold;color:#fff;text-shadow:0 -1px 1px
43
+ #014d68;background-image:-webkit-gradient(linear,left top,left
44
+ bottom,from(#72b0d4),to(#4b88b6));background-image:-webkit-linear-gradient(top,#72b0d4,#4b88b6);background-image:-moz-linear-gradient(top,#72b0d4,#4b88b6);background-image:-ms-linear-gradient(top,#72b0d4,#4b88b6);background-image:-o-linear-gradient(top,#72b0d4,#4b88b6);background-image:linear-gradient(top,#72b0d4,#4b88b6)}.ui-btn-hover-b
45
+ a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #225377;background:#4e89c5;font-weight:bold;color:#fff;text-shadow:0 -1px 1px
46
+ #225377;background-image:-webkit-gradient(linear,left top,left
47
+ bottom,from(#396b9e),to(#4e89c5));background-image:-webkit-linear-gradient(top,#396b9e,#4e89c5);background-image:-moz-linear-gradient(top,#396b9e,#4e89c5);background-image:-ms-linear-gradient(top,#396b9e,#4e89c5);background-image:-o-linear-gradient(top,#396b9e,#4e89c5);background-image:linear-gradient(top,#396b9e,#4e89c5)}.ui-btn-down-b
48
+ a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-c{border:1px
49
+ solid #b3b3b3;background:#e9eaeb;color:#3e3e3e;font-weight:bold;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left
50
+ top,left
51
+ bottom,from(#f0f0f0),to(#e9eaeb));background-image:-webkit-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-moz-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-ms-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:-o-linear-gradient(top,#f0f0f0,#e9eaeb);background-image:linear-gradient(top,#f0f0f0,#e9eaeb)}.ui-bar-c
52
+ .ui-link{color:#2489ce;font-weight:bold}.ui-bar-c,.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c
53
+ button{font-family:Helvetica,Arial,sans-serif}.ui-body-c{border:1px solid #b3b3b3;color:#333;text-shadow:0 1px 0
54
+ #fff;background:#f0f0f0;background-image:-webkit-gradient(linear,left top,left
55
+ bottom,from(#eee),to(#ddd));background-image:-webkit-linear-gradient(top,#eee,#ddd);background-image:-moz-linear-gradient(top,#eee,#ddd);background-image:-ms-linear-gradient(top,#eee,#ddd);background-image:-o-linear-gradient(top,#eee,#ddd);background-image:linear-gradient(top,#eee,#ddd)}.ui-body-c,.ui-body-c
56
+ input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Helvetica,Arial,sans-serif}.ui-body-c
57
+ .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-c{border:1px solid
58
+ #ccc;background:#eee;font-weight:bold;color:#444;text-shadow:0 1px 1px #f6f6f6;background-image:-webkit-gradient(linear,left top,left
59
+ bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(top,#fdfdfd,#eee);background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-ms-linear-gradient(top,#fdfdfd,#eee);background-image:-o-linear-gradient(top,#fdfdfd,#eee);background-image:linear-gradient(top,#fdfdfd,#eee)}.ui-btn-up-c
60
+ a.ui-link-inherit{color:#2f3e46}.ui-btn-hover-c{border:1px solid #bbb;background:#dadada;font-weight:bold;color:#101010;text-shadow:0 1px 1px
61
+ #fff;background-image:-webkit-gradient(linear,left top,left
62
+ bottom,from(#ededed),to(#dadada));background-image:-webkit-linear-gradient(top,#ededed,#dadada);background-image:-moz-linear-gradient(top,#ededed,#dadada);background-image:-ms-linear-gradient(top,#ededed,#dadada);background-image:-o-linear-gradient(top,#ededed,#dadada);background-image:linear-gradient(top,#ededed,#dadada)}.ui-btn-hover-c
63
+ a.ui-link-inherit{color:#2f3e46}.ui-btn-down-c{border:1px solid #808080;background:#fdfdfd;font-weight:bold;color:#111;text-shadow:0 1px 1px
64
+ #fff;background-image:-webkit-gradient(linear,left top,left
65
+ bottom,from(#eee),to(#fdfdfd));background-image:-webkit-linear-gradient(top,#eee,#fdfdfd);background-image:-moz-linear-gradient(top,#eee,#fdfdfd);background-image:-ms-linear-gradient(top,#eee,#fdfdfd);background-image:-o-linear-gradient(top,#eee,#fdfdfd);background-image:linear-gradient(top,#eee,#fdfdfd)}.ui-btn-down-c
66
+ a.ui-link-inherit{color:#2f3e46}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-d{border:1px
67
+ solid #ccc;background:#bbb;color:#333;text-shadow:0 1px 0 #eee;background-image:-webkit-gradient(linear,left top,left
68
+ bottom,from(#ddd),to(#bbb));background-image:-webkit-linear-gradient(top,#ddd,#bbb);background-image:-moz-linear-gradient(top,#ddd,#bbb);background-image:-ms-linear-gradient(top,#ddd,#bbb);background-image:-o-linear-gradient(top,#ddd,#bbb);background-image:linear-gradient(top,#ddd,#bbb)}.ui-bar-d,.ui-bar-d
69
+ input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Helvetica,Arial,sans-serif}.ui-bar-d
70
+ .ui-link-inherit{color:#333}.ui-bar-d .ui-link{color:#2489ce;font-weight:bold}.ui-body-d{border:1px solid #ccc;color:#333;text-shadow:0 1px 0
71
+ #fff;background:#fff;background-image:-webkit-gradient(linear,left top,left
72
+ bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(top,#fff,#fff);background-image:-moz-linear-gradient(top,#fff,#fff);background-image:-ms-linear-gradient(top,#fff,#fff);background-image:-o-linear-gradient(top,#fff,#fff);background-image:linear-gradient(top,#fff,#fff)}.ui-body-d,.ui-body-d
73
+ input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Helvetica,Arial,sans-serif}.ui-body-d
74
+ .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-d{border:1px solid
75
+ #ccc;background:#fff;font-weight:bold;color:#444;text-shadow:0 1px 1px #fff;background-image:-webkit-gradient(linear,left top,left
76
+ bottom,from(#fff),to(#fff));background-image:-webkit-linear-gradient(top,#fff,#fff);background-image:-moz-linear-gradient(top,#fff,#fff);background-image:-ms-linear-gradient(top,#fff,#fff);background-image:-o-linear-gradient(top,#fff,#fff);background-image:linear-gradient(top,#fff,#fff)}.ui-btn-up-d
77
+ a.ui-link-inherit{color:#333}.ui-btn-hover-d{border:1px solid #aaa;background:#eee;font-weight:bold;color:#222;cursor:pointer;text-shadow:0 1px
78
+ 1px #fff;background-image:-webkit-gradient(linear,left top,left
79
+ bottom,from(#fdfdfd),to(#eee));background-image:-webkit-linear-gradient(top,#fdfdfd,#eee);background-image:-moz-linear-gradient(top,#fdfdfd,#eee);background-image:-ms-linear-gradient(top,#fdfdfd,#eee);background-image:-o-linear-gradient(top,#fdfdfd,#eee);background-image:linear-gradient(top,#fdfdfd,#eee)}.ui-btn-hover-d
80
+ a.ui-link-inherit{color:#222}.ui-btn-down-d{border:1px solid #aaa;background:#fff;font-weight:bold;color:#111;text-shadow:0 1px 1px
81
+ #fff;background-image:-webkit-gradient(linear,left top,left
82
+ bottom,from(#eee),to(#fff));background-image:-webkit-linear-gradient(top,#eee,#fff);background-image:-moz-linear-gradient(top,#eee,#fff);background-image:-ms-linear-gradient(top,#eee,#fff);background-image:-o-linear-gradient(top,#eee,#fff);background-image:linear-gradient(top,#eee,#fff)}.ui-btn-down-d
83
+ a.ui-link-inherit{color:#111}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Helvetica,Arial,sans-serif;text-decoration:none}.ui-bar-e{border:1px
84
+ solid #f7c942;background:#fadb4e;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left
85
+ bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(top,#fceda7,#fadb4e);background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-ms-linear-gradient(top,#fceda7,#fadb4e);background-image:-o-linear-gradient(top,#fceda7,#fadb4e);background-image:linear-gradient(top,#fceda7,#fadb4e)}.ui-bar-e,.ui-bar-e
86
+ input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Helvetica,Arial,sans-serif}.ui-bar-e
87
+ .ui-link-inherit{color:#333}.ui-bar-e .ui-link{color:#2489ce;font-weight:bold}.ui-body-e{border:1px solid #f7c942;color:#333;text-shadow:0 1px 0
88
+ #fff;background:#faeb9e;background-image:-webkit-gradient(linear,left top,left
89
+ bottom,from(#fff),to(#faeb9e));background-image:-webkit-linear-gradient(top,#fff,#faeb9e);background-image:-moz-linear-gradient(top,#fff,#faeb9e);background-image:-ms-linear-gradient(top,#fff,#faeb9e);background-image:-o-linear-gradient(top,#fff,#faeb9e);background-image:linear-gradient(top,#fff,#faeb9e)}.ui-body-e,.ui-body-e
90
+ input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Helvetica,Arial,sans-serif}.ui-body-e
91
+ .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#2489ce;font-weight:bold}.ui-btn-up-e{border:1px solid
92
+ #f7c942;background:#fadb4e;font-weight:bold;color:#333;text-shadow:0 1px 0 #fff;background-image:-webkit-gradient(linear,left top,left
93
+ bottom,from(#fceda7),to(#fadb4e));background-image:-webkit-linear-gradient(top,#fceda7,#fadb4e);background-image:-moz-linear-gradient(top,#fceda7,#fadb4e);background-image:-ms-linear-gradient(top,#fceda7,#fadb4e);background-image:-o-linear-gradient(top,#fceda7,#fadb4e);background-image:linear-gradient(top,#fceda7,#fadb4e)}.ui-btn-up-e
94
+ a.ui-link-inherit{color:#333}.ui-btn-hover-e{border:1px solid #e79952;background:#fbe26f;font-weight:bold;color:#111;text-shadow:0 1px 1px
95
+ #fff;background-image:-webkit-gradient(linear,left top,left
96
+ bottom,from(#fcf0b5),to(#fbe26f));background-image:-webkit-linear-gradient(top,#fcf0b5,#fbe26f);background-image:-moz-linear-gradient(top,#fcf0b5,#fbe26f);background-image:-ms-linear-gradient(top,#fcf0b5,#fbe26f);background-image:-o-linear-gradient(top,#fcf0b5,#fbe26f);background-image:linear-gradient(top,#fcf0b5,#fbe26f)}.ui-btn-hover-e
97
+ a.ui-link-inherit{color:#333}.ui-btn-down-e{border:1px solid #f7c942;background:#fceda7;font-weight:bold;color:#111;text-shadow:0 1px 1px
98
+ #fff;background-image:-webkit-gradient(linear,left top,left
99
+ bottom,from(#fadb4e),to(#fceda7));background-image:-webkit-linear-gradient(top,#fadb4e,#fceda7);background-image:-moz-linear-gradient(top,#fadb4e,#fceda7);background-image:-ms-linear-gradient(top,#fadb4e,#fceda7);background-image:-o-linear-gradient(top,#fadb4e,#fceda7);background-image:linear-gradient(top,#fadb4e,#fceda7)}.ui-btn-down-e
100
+ a.ui-link-inherit{color:#333}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Helvetica,Arial,sans-serif;text-decoration:none}a.ui-link-inherit{text-decoration:none!important}.ui-link{color:#2489ce}.ui-link:hover{color:#2489ce}.ui-link:active{color:#2489ce}.ui-link:visited{color:#2489ce}.ui-btn-active{border:1px
101
+ solid #155678;background:#4596ce;font-weight:bold;color:#fff;cursor:pointer;text-shadow:0 -1px 1px
102
+ #145072;text-decoration:none;background-image:-webkit-gradient(linear,left top,left
103
+ bottom,from(#85bae4),to(#5393c5));background-image:-webkit-linear-gradient(top,#85bae4,#5393c5);background-image:-moz-linear-gradient(top,#85bae4,#5393c5);background-image:-ms-linear-gradient(top,#85bae4,#5393c5);background-image:-o-linear-gradient(top,#85bae4,#5393c5);background-image:linear-gradient(top,#85bae4,#5393c5);outline:0;font-family:Helvetica,Arial,sans-serif}.ui-btn-active
104
+ a.ui-link-inherit{color:#fff}.ui-btn-inner{border-top:1px solid
105
+ #fff;border-color:rgba(255,255,255,.3)}.ui-corner-tl{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em}.ui-corner-tr{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bl{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-br{-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-top{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em}.ui-corner-bottom{-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-right{-moz-border-radius-topright:.6em;-webkit-border-top-right-radius:.6em;border-top-right-radius:.6em;-moz-border-radius-bottomright:.6em;-webkit-border-bottom-right-radius:.6em;border-bottom-right-radius:.6em}.ui-corner-left{-moz-border-radius-topleft:.6em;-webkit-border-top-left-radius:.6em;border-top-left-radius:.6em;-moz-border-radius-bottomleft:.6em;-webkit-border-bottom-left-radius:.6em;border-bottom-left-radius:.6em}.ui-corner-all{-moz-border-radius:.6em;-webkit-border-radius:.6em;border-radius:.6em}.ui-corner-none{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.ui-disabled{opacity:.3}.ui-disabled,.ui-disabled
106
+ a{cursor:default}.ui-icon,.ui-icon-searchfield:after{background:#666;background:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png);background-repeat:no-repeat;-moz-border-radius:9px;-webkit-border-radius:9px;border-radius:9px}.ui-icon-alt{background:#fff;background:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}@media
107
+ only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and
108
+ (min-resolution:240dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:776px
109
+ 18px;-o-background-size:776px 18px;-webkit-background-size:776px 18px;background-size:776px
110
+ 18px}.ui-icon-alt{background-image:url(images/icons-36-black.png)}}.ui-icon-plus{background-position:-0
111
+ 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px
112
+ 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-180px 50%}.ui-icon-arrow-d{background-position:-216px
113
+ 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-288px 50%}.ui-icon-refresh{background-position:-324px
114
+ 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-396px 50%}.ui-icon-grid{background-position:-432px
115
+ 50%}.ui-icon-star{background-position:-468px 50%}.ui-icon-alert{background-position:-504px 50%}.ui-icon-info{background-position:-540px
116
+ 50%}.ui-icon-home{background-position:-576px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-612px
117
+ 50%}.ui-icon-checkbox-off{background-position:-684px 50%}.ui-icon-checkbox-on{background-position:-648px
118
+ 50%}.ui-icon-radio-off{background-position:-756px 50%}.ui-icon-radio-on{background-position:-720px 50%}.ui-checkbox
119
+ .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on
120
+ .ui-icon,.ui-radio-on
121
+ .ui-icon{background-color:#4596ce}.ui-icon-loading{background-image:url(images/ajax-loader.png);width:40px;height:40px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;background-size:35px
122
+ 35px}.ui-btn-corner-tl{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em}.ui-btn-corner-tr{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bl{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-br{-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-top{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em}.ui-btn-corner-bottom{-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-right{-moz-border-radius-topright:1em;-webkit-border-top-right-radius:1em;border-top-right-radius:1em;-moz-border-radius-bottomright:1em;-webkit-border-bottom-right-radius:1em;border-bottom-right-radius:1em}.ui-btn-corner-left{-moz-border-radius-topleft:1em;-webkit-border-top-left-radius:1em;border-top-left-radius:1em;-moz-border-radius-bottomleft:1em;-webkit-border-bottom-left-radius:1em;border-bottom-left-radius:1em}.ui-btn-corner-all{-moz-border-radius:1em;-webkit-border-radius:1em;border-radius:1em}.ui-corner-tl,.ui-corner-tr,.ui-corner-bl,.ui-corner-br,.ui-corner-top,.ui-corner-bottom,.ui-corner-right,.ui-corner-left,.ui-corner-all,.ui-btn-corner-tl,.ui-btn-corner-tr,.ui-btn-corner-bl,.ui-btn-corner-br,.ui-btn-corner-top,.ui-btn-corner-bottom,.ui-btn-corner-right,.ui-btn-corner-left,.ui-btn-corner-all{-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.ui-overlay{background:#666;opacity:.5;filter:Alpha(Opacity=50);position:absolute;width:100%;height:100%}.ui-overlay-shadow{-moz-box-shadow:0
123
+ 0 12px rgba(0,0,0,.6);-webkit-box-shadow:0 0 12px rgba(0,0,0,.6);box-shadow:0 0 12px rgba(0,0,0,.6)}.ui-shadow{-moz-box-shadow:0 1px 4px
124
+ rgba(0,0,0,.3);-webkit-box-shadow:0 1px 4px rgba(0,0,0,.3);box-shadow:0 1px 4px rgba(0,0,0,.3)}.ui-bar-a .ui-shadow,.ui-bar-b
125
+ .ui-shadow,.ui-bar-c .ui-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0
126
+ rgba(255,255,255,.3)}.ui-shadow-inset{-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 4px
127
+ rgba(0,0,0,.2);box-shadow:inset 0 1px 4px rgba(0,0,0,.2)}.ui-icon-shadow{-moz-box-shadow:0 1px 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0
128
+ rgba(255,255,255,.4);box-shadow:0 1px 0 rgba(255,255,255,.4)}.ui-focus{-moz-box-shadow:0 0 12px #387bbe;-webkit-box-shadow:0 0 12px
129
+ #387bbe;box-shadow:0 0 12px #387bbe}.ui-mobile-nosupport-boxshadow
130
+ *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow
131
+ .ui-focus{outline-width:2px}.ui-mobile,.ui-mobile body{height:100%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile
132
+ fieldset{border:0}.ui-mobile-viewport{margin:0;overflow-x:hidden;-webkit-text-size-adjust:none;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ui-mobile
133
+ [data-role=page],.ui-mobile
134
+ [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile
135
+ .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}.ui-page.ui-mobile-touch-overflow,.ui-mobile-touch-overflow.ui-native-fixed
136
+ .ui-content{overflow:auto;height:100%;-webkit-overflow-scrolling:touch;-moz-overflow-scrolling:touch;-o-overflow-scrolling:touch;-ms-overflow-scrolling:touch;overflow-scrolling:touch}.ui-page.ui-mobile-touch-overflow,.ui-page.ui-mobile-touch-overflow
137
+ *{-webkit-transform:rotateY(0)}.ui-page.ui-mobile-pre-transition{display:block}.ui-loading
138
+ .ui-mobile-viewport{overflow:hidden!important}.ui-loading .ui-loader{display:block}.ui-loading
139
+ .ui-page{overflow:hidden}.ui-loader{display:none;position:absolute;opacity:.85;z-index:100;left:50%;width:200px;margin-left:-130px;margin-top:-35px;padding:10px
140
+ 30px}.ui-loader h1{font-size:15px;text-align:center}.ui-loader .ui-icon{position:static;display:block;opacity:.9;margin:0
141
+ auto;width:35px;height:35px;background-color:transparent}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em
142
+ 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar
143
+ h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{display:block}.ui-page .ui-header,.ui-page
144
+ .ui-footer{position:relative}.ui-header .ui-btn-left{position:absolute;left:10px;top:.4em}.ui-header
145
+ .ui-btn-right{position:absolute;right:10px;top:.4em}.ui-header .ui-title,.ui-footer
146
+ .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 90px
147
+ .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-page-fullscreen
148
+ .ui-content{padding:0}.ui-mobile-touch-overflow.ui-page.ui-native-fixed,.ui-mobile-touch-overflow.ui-page.ui-native-fullscreen{overflow:visible}.ui-mobile-touch-overflow.ui-native-fixed
149
+ .ui-header,.ui-mobile-touch-overflow.ui-native-fixed
150
+ .ui-footer{position:fixed;left:0;right:0;top:0;z-index:200}.ui-mobile-touch-overflow.ui-page.ui-native-fixed
151
+ .ui-footer{top:auto;bottom:0}.ui-mobile-touch-overflow.ui-native-fixed
152
+ .ui-content{padding-top:2.5em;padding-bottom:3em;top:0;bottom:0;height:auto;position:absolute}.ui-mobile-touch-overflow.ui-native-fullscreen
153
+ .ui-content{padding-top:0;padding-bottom:0}.ui-mobile-touch-overflow.ui-native-fullscreen
154
+ .ui-header,.ui-mobile-touch-overflow.ui-native-fullscreen
155
+ .ui-footer{opacity:.9}.ui-native-bars-hidden{display:none}.ui-icon{width:18px;height:18px}.ui-fullscreen
156
+ img{max-width:100%}.ui-nojs{position:absolute;left:-9999px}.spin{-webkit-transform:rotate(360deg);-webkit-animation-name:spin;-webkit-animation-duration:1s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear}@-webkit-keyframes
157
+ spin{from{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}.in,.out{-webkit-animation-timing-function:ease-in-out;-webkit-animation-duration:350ms}.slide.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft}.slide.in{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:slideinfromleft}.slideup.out{-webkit-animation-name:dontmove;z-index:0}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;z-index:10}.slideup.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slideup.out.reverse{-webkit-transform:translateY(100%);z-index:10;-webkit-animation-name:slideouttobottom}.slidedown.out{-webkit-animation-name:dontmove;z-index:0}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;z-index:10}.slidedown.in.reverse{z-index:0;-webkit-animation-name:dontmove}.slidedown.out.reverse{-webkit-transform:translateY(-100%);z-index:10;-webkit-animation-name:slideouttotop}@-webkit-keyframes
158
+ slideinfromright{from{-webkit-transform:translateX(100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes
159
+ slideinfromleft{from{-webkit-transform:translateX(-100%)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes
160
+ slideouttoleft{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(-100%)}}@-webkit-keyframes
161
+ slideouttoright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(100%)}}@-webkit-keyframes
162
+ slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes
163
+ slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes
164
+ slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-webkit-keyframes
165
+ slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-webkit-keyframes
166
+ fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes
167
+ fadeout{from{opacity:1}to{opacity:0}}.fade.out{z-index:0;-webkit-animation-name:fadeout}.fade.in{opacity:1;z-index:10;-webkit-animation-name:fadein}.viewport-flip{-webkit-perspective:1000;position:absolute}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning
168
+ .ui-page{width:100%;height:100%;overflow:hidden}.flip{-webkit-animation-duration:.65s;-webkit-backface-visibility:hidden;-webkit-transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-180deg)
169
+ scale(.8);-webkit-animation-name:flipouttoleft}.flip.in{-webkit-transform:rotateY(0)
170
+ scale(1);-webkit-animation-name:flipinfromleft}.flip.out.reverse{-webkit-transform:rotateY(180deg)
171
+ scale(.8);-webkit-animation-name:flipouttoright}.flip.in.reverse{-webkit-transform:rotateY(0)
172
+ scale(1);-webkit-animation-name:flipinfromright}@-webkit-keyframes flipinfromright{from{-webkit-transform:rotateY(-180deg)
173
+ scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipinfromleft{from{-webkit-transform:rotateY(180deg)
174
+ scale(.8)}to{-webkit-transform:rotateY(0) scale(1)}}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)
175
+ scale(1)}to{-webkit-transform:rotateY(-180deg) scale(.8)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)
176
+ scale(1)}to{-webkit-transform:rotateY(180deg) scale(.8)}}@-webkit-keyframes
177
+ dontmove{from{opacity:1}to{opacity:1}}.pop{-webkit-transform-origin:50%
178
+ 50%}.pop.in{-webkit-transform:scale(1);opacity:1;-webkit-animation-name:popin;z-index:10}.pop.in.reverse{z-index:0;-webkit-animation-name:dontmove}.pop.out.reverse{-webkit-transform:scale(.2);opacity:0;-webkit-animation-name:popout;z-index:10}@-webkit-keyframes
179
+ popin{from{-webkit-transform:scale(.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-webkit-keyframes
180
+ popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.2);opacity:0}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px}.ui-grid-solo
181
+ .ui-block-a{width:100%;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:50%}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b
182
+ .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.333%}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c
183
+ .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:25%}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d
184
+ .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:20%}.ui-grid-d
185
+ .ui-block-a{clear:left}.ui-header,.ui-footer,.ui-page-fullscreen .ui-header,.ui-page-fullscreen
186
+ .ui-footer{position:absolute;overflow:hidden;width:100%;border-left-width:0;border-right-width:0}.ui-header-fixed,.ui-footer-fixed{z-index:1000;-webkit-transform:translateZ(0)}.ui-footer-duplicate,.ui-page-fullscreen
187
+ .ui-fixed-inline{display:none}.ui-page-fullscreen .ui-header,.ui-page-fullscreen .ui-footer{opacity:.9}.ui-navbar{overflow:hidden}.ui-navbar
188
+ ul,.ui-navbar-expanded ul{list-style:none;padding:0;margin:0;position:relative;display:block;border:0}.ui-navbar-collapsed
189
+ ul{float:left;width:75%;margin-right:-2px}.ui-navbar-collapsed .ui-navbar-toggle{float:left;width:25%}.ui-navbar
190
+ li.ui-navbar-truncate{position:absolute;left:-9999px;top:-9999px}.ui-navbar li .ui-btn,.ui-navbar .ui-navbar-toggle
191
+ .ui-btn{display:block;font-size:12px;text-align:center;margin:0;border-right-width:0}.ui-navbar li .ui-btn{margin-right:-1px}.ui-navbar li
192
+ .ui-btn:last-child{margin-right:0}.ui-header .ui-navbar li .ui-btn,.ui-header .ui-navbar .ui-navbar-toggle .ui-btn,.ui-footer .ui-navbar li
193
+ .ui-btn,.ui-footer .ui-navbar .ui-navbar-toggle .ui-btn{border-top-width:0;border-bottom-width:0}.ui-navbar
194
+ .ui-btn-inner{padding-left:2px;padding-right:2px}.ui-navbar-noicons li .ui-btn .ui-btn-inner,.ui-navbar-noicons .ui-navbar-toggle
195
+ .ui-btn-inner{padding-top:.8em;padding-bottom:.9em}.ui-navbar-expanded .ui-btn{margin:0;font-size:14px}.ui-navbar-expanded
196
+ .ui-btn-inner{padding-left:5px;padding-right:5px}.ui-navbar-expanded .ui-btn-icon-top .ui-btn-inner{padding:45px 5px
197
+ 15px;text-align:center}.ui-navbar-expanded .ui-btn-icon-top .ui-icon{top:15px}.ui-navbar-expanded .ui-btn-icon-bottom .ui-btn-inner{padding:15px
198
+ 5px 45px;text-align:center}.ui-navbar-expanded .ui-btn-icon-bottom .ui-icon{bottom:15px}.ui-navbar-expanded li .ui-btn
199
+ .ui-btn-inner{min-height:2.5em}.ui-navbar-expanded .ui-navbar-noicons .ui-btn
200
+ .ui-btn-inner{padding-top:1.8em;padding-bottom:1.9em}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em
201
+ 5px;padding:0}.ui-btn:focus,.ui-btn:active{outline:0}.ui-header .ui-btn,.ui-footer .ui-btn,.ui-bar
202
+ .ui-btn{display:inline-block;font-size:13px;margin:0}.ui-btn-inline{display:inline-block}.ui-btn-inner{padding:.6em
203
+ 25px;display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative;zoom:1}.ui-header .ui-btn-inner,.ui-footer
204
+ .ui-btn-inner,.ui-bar .ui-btn-inner{padding:.4em 8px .5em}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext
205
+ .ui-btn-inner{padding:2px 1px 2px 3px}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-999px}.ui-btn-icon-left
206
+ .ui-btn-inner{padding-left:33px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-bar .ui-btn-icon-left
207
+ .ui-btn-inner{padding-left:27px}.ui-btn-icon-right .ui-btn-inner{padding-right:33px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer
208
+ .ui-btn-icon-right .ui-btn-inner,.ui-bar .ui-btn-icon-right .ui-btn-inner{padding-right:27px}.ui-btn-icon-top
209
+ .ui-btn-inner{padding-top:33px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner,.ui-bar .ui-btn-icon-top
210
+ .ui-btn-inner{padding-top:27px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:33px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer
211
+ .ui-btn-icon-bottom .ui-btn-inner,.ui-bar .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:27px}.ui-btn-icon-notext
212
+ .ui-icon{display:block}.ui-btn-icon-left .ui-icon,.ui-btn-icon-right .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top
213
+ .ui-icon,.ui-btn-icon-bottom .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right
214
+ .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer
215
+ .ui-btn-icon-left .ui-icon,.ui-bar .ui-btn-icon-left .ui-icon{left:4px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right
216
+ .ui-icon,.ui-bar .ui-btn-icon-right .ui-icon{right:4px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-bar
217
+ .ui-btn-icon-top .ui-icon{top:4px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-bar .ui-btn-icon-bottom
218
+ .ui-icon{bottom:4px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:button;opacity:.1;cursor:pointer;background:transparent;font-size:1px;border:0;line-height:999px}.ui-collapsible{margin:.5em
219
+ 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -8px;padding:0;border-width:0 0 1px 0;position:relative}.ui-collapsible-heading
220
+ a{text-align:left;margin:0}.ui-collapsible-heading a .ui-btn-inner{padding-left:40px}.ui-collapsible-heading a
221
+ span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px
222
+ 2px;text-indent:-9999px}.ui-collapsible-heading a span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading a span.ui-btn
223
+ .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;left:-9999px}.ui-collapsible-content{display:block;margin:0
224
+ -8px;padding:10px
225
+ 16px;border-top:0;background-image:none;font-weight:normal}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set{margin:.5em
226
+ 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0 1em}.ui-bar
227
+ .ui-controlgroup{margin:0 .3em}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0
228
+ .3em}.ui-controlgroup-controls{display:block;width:95%}.ui-controlgroup li{list-style:none}.ui-controlgroup-vertical
229
+ .ui-btn,.ui-controlgroup-vertical .ui-checkbox,.ui-controlgroup-vertical .ui-radio{margin:0;border-bottom-width:0}.ui-controlgroup-vertical
230
+ .ui-controlgroup-last{border-bottom-width:1px}.ui-controlgroup-horizontal{padding:0}.ui-controlgroup-horizontal
231
+ .ui-btn{display:inline-block;margin:0 -5px 0 0}.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal
232
+ .ui-radio{float:left;margin:0 -1px 0 0}.ui-controlgroup-horizontal .ui-checkbox .ui-btn,.ui-controlgroup-horizontal .ui-radio
233
+ .ui-btn,.ui-controlgroup-horizontal .ui-checkbox:last-child,.ui-controlgroup-horizontal
234
+ .ui-radio:last-child{margin-right:0}.ui-controlgroup-horizontal .ui-controlgroup-last{margin-right:0}.ui-controlgroup .ui-checkbox
235
+ label,.ui-controlgroup .ui-radio label{font-size:16px}@media all and
236
+ (min-width:450px){.ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0
237
+ 0}.ui-controlgroup-controls{width:60%;display:inline-block}}.ui-dialog{min-height:480px}.ui-dialog .ui-header,.ui-dialog .ui-content,.ui-dialog
238
+ .ui-footer{margin:15px;position:relative}.ui-dialog .ui-header,.ui-dialog .ui-footer{z-index:10;width:auto}.ui-dialog .ui-content,.ui-dialog
239
+ .ui-footer{margin-top:-15px}.ui-checkbox,.ui-radio{position:relative;margin:.2em 0 .5em;z-index:1}.ui-checkbox .ui-btn,.ui-radio
240
+ .ui-btn{margin:0;text-align:left;z-index:2}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left
241
+ .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio
242
+ .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left
243
+ .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right
244
+ .ui-icon{right:15px}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0
245
+ 0;outline:0!important;z-index:1}.ui-field-contain{padding:1.5em
246
+ 0;margin:0;border-bottom-width:1px;overflow:visible}.ui-field-contain:first-child{border-top-width:0}@media all and
247
+ (min-width:450px){.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select
248
+ select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{overflow:hidden}.ui-select .ui-btn
249
+ select{cursor:pointer;-webkit-appearance:button;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;opacity:0;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);z-index:2}@-moz-document
250
+ url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn select.ui-select-nativeonly{opacity:1;text-indent:0}.ui-select
251
+ .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-select .ui-btn-icon-right
252
+ .ui-icon{right:15px}label.ui-select{font-size:16px;line-height:1.4;font-weight:normal;margin:0 0 .3em;display:block}.ui-select
253
+ .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em}.ui-select
254
+ .ui-btn-text{text-overflow:ellipsis;overflow:hidden}.ui-selectmenu{position:absolute;padding:0;z-index:100!important;width:80%;max-width:350px;padding:6px}.ui-selectmenu
255
+ .ui-listview{margin:0}.ui-selectmenu
256
+ .ui-btn.ui-li-divider{cursor:default}.ui-selectmenu-hidden{top:-9999px;left:-9999px}.ui-selectmenu-screen{position:absolute;top:0;left:0;width:100%;height:100%;z-index:99}.ui-screen-hidden,.ui-selectmenu-list
257
+ .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu
258
+ .ui-header .ui-title{margin:.6em 46px .8em}@media all and
259
+ (min-width:450px){label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0
260
+ 0}.ui-select{width:60%;display:inline-block}}.ui-selectmenu .ui-header
261
+ h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:normal;margin:0 0
262
+ .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;line-height:1.4;font-size:16px;display:block;width:95%}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height
263
+ 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}.ui-input-search{padding:0
264
+ 30px;width:77%;background-image:none;position:relative}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search
265
+ input.ui-input-text{border:0;width:98%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search
266
+ .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-14px}.ui-input-search .ui-input-clear-hidden{display:none}@media all and
267
+ (min-width:450px){label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0
268
+ 0}input.ui-input-text,textarea.ui-input-text,.ui-input-search{width:60%;display:inline-block}.ui-input-search{width:50%}.ui-input-search
269
+ input.ui-input-text{width:98%}}.ui-listview{margin:0;counter-reset:listnumbering}.ui-content .ui-listview{margin:-15px}.ui-content
270
+ .ui-listview-inset{margin:1em
271
+ 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li
272
+ .ui-btn-text{position:relative;z-index:1}.ui-li .ui-btn-text
273
+ a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-divider,.ui-li-static{padding:.5em
274
+ 15px;font-size:14px;font-weight:bold}.ui-li-divider{counter-reset:listnumbering}ol.ui-listview .ui-link-inherit:before,ol.ui-listview
275
+ .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:normal;counter-increment:listnumbering;content:counter(listnumbering)
276
+ ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview-inset
277
+ .ui-li{border-right-width:1px;border-left-width:1px}.ui-li:last-child,.ui-li.ui-field-contain:last-child{border-bottom-width:1px}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li
278
+ .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px .7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner
279
+ a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:60px;padding-left:100px}.ui-li-has-icon .ui-btn-inner
280
+ a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner
281
+ a.ui-link-inherit,.ui-li-static.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner
282
+ a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:30px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner
283
+ a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-heading{font-size:16px;font-weight:bold;display:block;margin:.6em
284
+ 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:normal;display:block;margin:-.5em 0
285
+ .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-thumb,.ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-li-icon{max-height:40px;max-width:40px;left:10px;top:.9em}.ui-li-thumb,.ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em
286
+ 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner
287
+ a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:95px}.ui-li-has-count
288
+ .ui-li-count{position:absolute;font-size:11px;font-weight:bold;padding:.2em .5em;top:50%;margin-top:-.9em;right:38px}.ui-li-divider
289
+ .ui-li-count,.ui-li-static .ui-li-count{right:10px}.ui-li-has-alt
290
+ .ui-li-count{right:55px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt
291
+ .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-11px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt
292
+ .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn
293
+ .ui-icon{right:50%;margin-right:-9px}.ui-listview *
294
+ .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px
295
+ -15px}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-listview-filter-inset{margin:-15px -5px -15px
296
+ -5px;background:transparent}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and
297
+ (max-device-width:1024px){.ui-li
298
+ .ui-btn-text{overflow:visible}}label.ui-slider{display:block}input.ui-slider-input{display:inline-block;width:50px}select.ui-slider-switch{display:none}div.ui-slider{position:relative;display:inline-block;overflow:visible;height:15px;padding:0;margin:0
299
+ 2% 0
300
+ 20px;top:4px;width:66%}a.ui-slider-handle{position:absolute;z-index:10;top:50%;width:28px;height:28px;margin-top:-15px;margin-left:-15px}a.ui-slider-handle
301
+ .ui-btn-inner{padding-left:0;padding-right:0}@media all and
302
+ (min-width:480px){label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0
303
+ 0}div.ui-slider{width:45%}}div.ui-slider-switch{height:32px;overflow:hidden;margin-left:0}div.ui-slider-inneroffset{margin-left:50%;position:absolute;top:1px;height:100%;width:50%}a.ui-slider-handle-snapping{-webkit-transition:left
304
+ 100ms linear}div.ui-slider-labelbg{position:absolute;top:0;margin:0;border-width:0}div.ui-slider-switch
305
+ div.ui-slider-labelbg-a{width:60%;height:100%;left:0}div.ui-slider-switch
306
+ div.ui-slider-labelbg-b{width:60%;height:100%;right:0}.ui-slider-switch-a div.ui-slider-labelbg-a,.ui-slider-switch-b
307
+ div.ui-slider-labelbg-b{z-index:-1}.ui-slider-switch-a div.ui-slider-labelbg-b,.ui-slider-switch-b
308
+ div.ui-slider-labelbg-a{z-index:0}div.ui-slider-switch
309
+ a.ui-slider-handle{z-index:20;width:101%;height:32px;margin-top:-18px;margin-left:-101%}span.ui-slider-label{width:100%;position:absolute;height:32px;font-size:16px;text-align:center;line-height:2;background:0;border-color:transparent}span.ui-slider-label-a{left:-100%;margin-right:-1px}span.ui-slider-label-b{right:-100%;margin-left:-1px}
metadata CHANGED
@@ -3,10 +3,11 @@ name: assetify
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
- - 1
6
+ - 2
7
7
  - 0
8
8
  - 0
9
- version: 1.0.0
9
+ segments_generated: true
10
+ version: 2.0.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Marcos Piccinini
@@ -15,7 +16,7 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-09-30 00:00:00 -03:00
19
+ date: 2011-10-06 00:00:00 -03:00
19
20
  default_executable: assetify
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
@@ -29,6 +30,7 @@ dependencies:
29
30
  - 2
30
31
  - 3
31
32
  - 0
33
+ segments_generated: true
32
34
  version: 2.3.0
33
35
  type: :development
34
36
  prerelease: false
@@ -44,6 +46,7 @@ dependencies:
44
46
  - 1
45
47
  - 0
46
48
  - 0
49
+ segments_generated: true
47
50
  version: 1.0.0
48
51
  type: :development
49
52
  prerelease: false
@@ -57,6 +60,7 @@ dependencies:
57
60
  - !ruby/object:Gem::Version
58
61
  segments:
59
62
  - 0
63
+ segments_generated: true
60
64
  version: "0"
61
65
  type: :development
62
66
  prerelease: false
@@ -70,6 +74,7 @@ dependencies:
70
74
  - !ruby/object:Gem::Version
71
75
  segments:
72
76
  - 0
77
+ segments_generated: true
73
78
  version: "0"
74
79
  type: :development
75
80
  prerelease: false
@@ -83,6 +88,7 @@ dependencies:
83
88
  - !ruby/object:Gem::Version
84
89
  segments:
85
90
  - 0
91
+ segments_generated: true
86
92
  version: "0"
87
93
  type: :development
88
94
  prerelease: false
@@ -96,6 +102,7 @@ dependencies:
96
102
  - !ruby/object:Gem::Version
97
103
  segments:
98
104
  - 0
105
+ segments_generated: true
99
106
  version: "0"
100
107
  type: :development
101
108
  prerelease: false
@@ -143,6 +150,7 @@ files:
143
150
  - spec/assetify_spec.rb
144
151
  - spec/fixtures/complex.tgz
145
152
  - spec/fixtures/fancy.tgz
153
+ - spec/fixtures/mobile.css
146
154
  - spec/fixtures/sassify.css
147
155
  - spec/spec_helper.rb
148
156
  has_rdoc: true
@@ -151,7 +159,7 @@ licenses:
151
159
  - MIT
152
160
  post_install_message: "\n\
153
161
  A ------------------------------------------------------------ A\n\n * A S S E T I F Y *\n\n\
154
- Thank you for installing assetify-1.0.0.\n\n\
162
+ Thank you for installing assetify-2.0.0.\n\n\
155
163
  Here is a few optional gems:\n\n * libarchive - For untar/unzip packages\n * minimagick - For image transformations\n * sass - For css2sass support\n\n\n\
156
164
  We hope `assetify` saves you some time!\n\n\
157
165
  A ------------------------------------------------------------ A\n"
@@ -164,9 +172,10 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
172
  requirements:
165
173
  - - ">="
166
174
  - !ruby/object:Gem::Version
167
- hash: 4282977214519276665
175
+ hash: 2940899508080035935
168
176
  segments:
169
177
  - 0
178
+ segments_generated: true
170
179
  version: "0"
171
180
  required_rubygems_version: !ruby/object:Gem::Requirement
172
181
  none: false
@@ -175,6 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
184
  - !ruby/object:Gem::Version
176
185
  segments:
177
186
  - 0
187
+ segments_generated: true
178
188
  version: "0"
179
189
  requirements: []
180
190