sinatra-assetpack 0.0.12.pre1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.3"
4
+ - "1.9.2"
5
+ - "1.8.7"
6
+ branches:
7
+ only:
8
+ - master
data/HISTORY.md CHANGED
@@ -1,3 +1,16 @@
1
+ v0.1.0 - Jan 14, 2013
2
+ ----------------------
3
+
4
+ ### Changed
5
+ * Using `file` utility instead `identify` utility. (#26)
6
+
7
+ ### Fixed
8
+ * Deal with different encodings in combined assets. (#47)
9
+ * Serve files with dots in name. (#32, #66)
10
+ * Deal with character encoding issues in ruby 1.8. (#51)
11
+ * Add missing depedency for development unit test. (#63)
12
+ * Deal with binary files copy (ex. images), fix errors like `"\x89" from ASCII-8BIT to UTF-8"`. (#38, #67)
13
+
1
14
  v0.0.11 - Feb 21, 2012
2
15
  ----------------------
3
16
 
data/README.md CHANGED
@@ -9,11 +9,13 @@ render Sass or whatever. No-siree!
9
9
  * JavaScript/CoffeeScript files in `/app/js`
10
10
  * CSS/Sass/Less/CSS files in `/app/css`
11
11
  * Images into `/app/images`
12
- 3. Add `register Sinatra::AssetPack` and set up options to your app (see below)
13
- 4. Use `<%= css :application %>` to your layouts. Use this instead of
14
- messy *script* and *link* tags
12
+ 3. Add `register Sinatra::AssetPack` and set up options to your app (see below).
13
+ 4. Use `<%= js :app %>` and `<%= css :application %>` to your layouts. Use these instead of
14
+ messy *script* and *link* tags.
15
15
  5. BOOM! You're in business baby!
16
16
 
17
+ [![Build Status](https://travis-ci.org/rstacruz/sinatra-assetpack.png)](https://travis-ci.org/rstacruz/sinatra-assetpack)
18
+
17
19
  Installation
18
20
  ------------
19
21
 
@@ -30,8 +30,8 @@ module Sinatra
30
30
  def dimensions
31
31
  return @dimensions unless @dimensions.nil?
32
32
 
33
- _, _, dim = `identify "#{@file}"`.split(' ')
34
- w, h = dim.split('x')
33
+ dim = /(\d+) x (\d+)/.match(`file "#{@file}"`)
34
+ w, h = dim[1,2]
35
35
 
36
36
  if w.to_i != 0 && h.to_i != 0
37
37
  @dimensions = [w.to_i, h.to_i]
@@ -170,7 +170,7 @@ module Sinatra
170
170
  @css_compression_options = options if options.is_a?(Hash)
171
171
  @css_compression
172
172
  end
173
-
173
+
174
174
  # =====================================================================
175
175
  # Stuff
176
176
 
@@ -237,14 +237,19 @@ module Sinatra
237
237
  # Returns the local file for a given URI path. (for dynamic files)
238
238
  # Returns nil if a file is not found.
239
239
  # TODO: consolidate with local_file_for
240
- def dyn_local_file_for(file, from)
240
+ def dyn_local_file_for(requested_file, from)
241
241
  # Remove extension
242
- file = $1 if file =~ /^(.*)(\.[^\.]+)$/
242
+ file = requested_file
243
+ extension = ''
244
+
245
+ file.sub(/^(.*)(\.[^\.]+)$/) { file, extension = $1, $2 }
243
246
 
244
247
  # Remove cache-buster (/js/app.28389.js => /js/app)
245
248
  file = $1 if file =~ /^(.*)\.[0-9]+$/
246
249
 
247
- Dir[File.join(app.root, from, "#{file}.*")].first
250
+ matches = Dir[File.join(app.root, from, "#{file}.*")]
251
+ # Fix for filenames with dots (can't do this with glob)
252
+ matches.select { |f| f =~ /#{file}\.[^.]+$/ }.first
248
253
  end
249
254
 
250
255
  # Writes `public/#{path}` based on contents of `output`.
@@ -255,7 +260,7 @@ module Sinatra
255
260
  yield path if block_given?
256
261
 
257
262
  FileUtils.mkdir_p File.dirname(path)
258
- File.open(path, 'w') { |f| f.write output }
263
+ File.open(path, 'wb') { |f| f.write output }
259
264
 
260
265
  if mtime
261
266
  File.utime mtime, mtime, path
@@ -96,9 +96,12 @@ module Sinatra
96
96
  session = Rack::Test::Session.new(@assets.app)
97
97
  paths.map { |path|
98
98
  result = session.get(path)
99
- response_encoding = result.content_type.split(/;\s*charset\s*=\s*/).last.upcase rescue 'ASCII-8BIT'
100
- # p [:combined, path, result.body.encoding.name, response_encoding]
101
- result.body.force_encoding(response_encoding).encode(Encoding.default_external || 'ASCII-8BIT') if result.status == 200
99
+ if result.body.respond_to?(:force_encoding)
100
+ response_encoding = result.content_type.split(/;\s*charset\s*=\s*/).last.upcase rescue 'ASCII-8BIT'
101
+ result.body.force_encoding(response_encoding).encode(Encoding.default_external || 'ASCII-8BIT') if result.status == 200
102
+ else
103
+ result.body if result.status == 200
104
+ end
102
105
  }.join("\n")
103
106
  end
104
107
 
@@ -1,7 +1,7 @@
1
1
  module Sinatra
2
2
  module AssetPack
3
3
  def self.version
4
- "0.0.12.pre1"
4
+ "0.1.0"
5
5
  end
6
6
  end
7
7
  end
@@ -23,4 +23,5 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "mocha"
24
24
  s.add_development_dependency "stylus"
25
25
  s.add_development_dependency "uglifier"
26
+ s.add_development_dependency "rake"
26
27
  end
@@ -0,0 +1 @@
1
+ $(function() { alert("Hello.2"); });
@@ -5,7 +5,7 @@ class AppTest < UnitTest
5
5
  get '/js/hello.js'
6
6
  assert body == '$(function() { alert("Hello"); });'
7
7
  end
8
-
8
+
9
9
  test '/js/hi.js (coffeescript)' do
10
10
  get '/js/hi.js'
11
11
  assert body.include? 'yo'
@@ -17,11 +17,16 @@ class AppTest < UnitTest
17
17
  assert last_response.status == 404
18
18
  end
19
19
 
20
- test '/js/hi.2834987.js (with cache buster)' do
20
+ test '/js/hello.2834987.js (with cache buster)' do
21
21
  get '/js/hello.283947.js'
22
22
  assert body == '$(function() { alert("Hello"); });'
23
23
  end
24
24
 
25
+ test '/js/hello.2.2834987.js (with cache buster)' do
26
+ get '/js/hello.2.283947.js'
27
+ assert body == '$(function() { alert("Hello.2"); });'
28
+ end
29
+
25
30
  test '/js/hi.2834987.js (coffeescript with cache buster)' do
26
31
  get '/js/hi.283947.js'
27
32
  assert last_response.status == 200
@@ -33,12 +38,12 @@ class AppTest < UnitTest
33
38
  get '/js/hello.css'
34
39
  assert last_response.status == 404
35
40
  end
36
-
41
+
37
42
  test 'matches only from the site root' do
38
43
  get '/not-the-root/js/hello.js'
39
44
  assert last_response.status == 404
40
45
  end
41
-
46
+
42
47
  test 'wrong extension for dynamic coffeescript file' do
43
48
  get '/js/hi.css'
44
49
  assert last_response.status == 404
metadata CHANGED
@@ -1,148 +1,224 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-assetpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12.pre1
5
- prerelease: 7
4
+ version: 0.1.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Rico Sta. Cruz
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-19 00:00:00.000000000 Z
12
+ date: 2013-01-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: tilt
16
- requirement: &2152235760 !ruby/object:Gem::Requirement
17
- none: false
16
+ prerelease: false
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
21
  version: 1.3.0
22
+ none: false
22
23
  type: :runtime
23
- prerelease: false
24
- version_requirements: *2152235760
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: 1.3.0
29
+ none: false
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: sinatra
27
- requirement: &2152235300 !ruby/object:Gem::Requirement
28
- none: false
32
+ prerelease: false
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  requirements:
30
35
  - - ! '>='
31
36
  - !ruby/object:Gem::Version
32
37
  version: '0'
38
+ none: false
33
39
  type: :runtime
34
- prerelease: false
35
- version_requirements: *2152235300
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ none: false
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: jsmin
38
- requirement: &2152234800 !ruby/object:Gem::Requirement
39
- none: false
48
+ prerelease: false
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  requirements:
41
51
  - - ! '>='
42
52
  - !ruby/object:Gem::Version
43
53
  version: '0'
54
+ none: false
44
55
  type: :runtime
45
- prerelease: false
46
- version_requirements: *2152234800
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ none: false
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: rack-test
49
- requirement: &2152234320 !ruby/object:Gem::Requirement
50
- none: false
64
+ prerelease: false
65
+ requirement: !ruby/object:Gem::Requirement
51
66
  requirements:
52
67
  - - ! '>='
53
68
  - !ruby/object:Gem::Version
54
69
  version: '0'
70
+ none: false
55
71
  type: :runtime
56
- prerelease: false
57
- version_requirements: *2152234320
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ none: false
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: yui-compressor
60
- requirement: &2152233840 !ruby/object:Gem::Requirement
61
- none: false
80
+ prerelease: false
81
+ requirement: !ruby/object:Gem::Requirement
62
82
  requirements:
63
83
  - - ! '>='
64
84
  - !ruby/object:Gem::Version
65
85
  version: '0'
86
+ none: false
66
87
  type: :development
67
- prerelease: false
68
- version_requirements: *2152233840
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ none: false
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: sass
71
- requirement: &2152233320 !ruby/object:Gem::Requirement
72
- none: false
96
+ prerelease: false
97
+ requirement: !ruby/object:Gem::Requirement
73
98
  requirements:
74
99
  - - ! '>='
75
100
  - !ruby/object:Gem::Version
76
101
  version: '0'
102
+ none: false
77
103
  type: :development
78
- prerelease: false
79
- version_requirements: *2152233320
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ none: false
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: haml
82
- requirement: &2152232700 !ruby/object:Gem::Requirement
83
- none: false
112
+ prerelease: false
113
+ requirement: !ruby/object:Gem::Requirement
84
114
  requirements:
85
115
  - - ! '>='
86
116
  - !ruby/object:Gem::Version
87
117
  version: '0'
118
+ none: false
88
119
  type: :development
89
- prerelease: false
90
- version_requirements: *2152232700
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ none: false
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: coffee-script
93
- requirement: &2152231900 !ruby/object:Gem::Requirement
94
- none: false
128
+ prerelease: false
129
+ requirement: !ruby/object:Gem::Requirement
95
130
  requirements:
96
131
  - - ! '>='
97
132
  - !ruby/object:Gem::Version
98
133
  version: '0'
134
+ none: false
99
135
  type: :development
100
- prerelease: false
101
- version_requirements: *2152231900
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ none: false
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: contest
104
- requirement: &2152246000 !ruby/object:Gem::Requirement
105
- none: false
144
+ prerelease: false
145
+ requirement: !ruby/object:Gem::Requirement
106
146
  requirements:
107
147
  - - ! '>='
108
148
  - !ruby/object:Gem::Version
109
149
  version: '0'
150
+ none: false
110
151
  type: :development
111
- prerelease: false
112
- version_requirements: *2152246000
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ none: false
113
158
  - !ruby/object:Gem::Dependency
114
159
  name: mocha
115
- requirement: &2152245260 !ruby/object:Gem::Requirement
116
- none: false
160
+ prerelease: false
161
+ requirement: !ruby/object:Gem::Requirement
117
162
  requirements:
118
163
  - - ! '>='
119
164
  - !ruby/object:Gem::Version
120
165
  version: '0'
166
+ none: false
121
167
  type: :development
122
- prerelease: false
123
- version_requirements: *2152245260
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ! '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ none: false
124
174
  - !ruby/object:Gem::Dependency
125
175
  name: stylus
126
- requirement: &2152244580 !ruby/object:Gem::Requirement
127
- none: false
176
+ prerelease: false
177
+ requirement: !ruby/object:Gem::Requirement
128
178
  requirements:
129
179
  - - ! '>='
130
180
  - !ruby/object:Gem::Version
131
181
  version: '0'
182
+ none: false
132
183
  type: :development
133
- prerelease: false
134
- version_requirements: *2152244580
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ! '>='
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ none: false
135
190
  - !ruby/object:Gem::Dependency
136
191
  name: uglifier
137
- requirement: &2152243720 !ruby/object:Gem::Requirement
138
- none: false
192
+ prerelease: false
193
+ requirement: !ruby/object:Gem::Requirement
139
194
  requirements:
140
195
  - - ! '>='
141
196
  - !ruby/object:Gem::Version
142
197
  version: '0'
198
+ none: false
143
199
  type: :development
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ! '>='
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ none: false
206
+ - !ruby/object:Gem::Dependency
207
+ name: rake
144
208
  prerelease: false
145
- version_requirements: *2152243720
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ none: false
215
+ type: :development
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ! '>='
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ none: false
146
222
  description: Package your assets for Sinatra.
147
223
  email:
148
224
  - rico@sinefunc.com
@@ -151,6 +227,7 @@ extensions: []
151
227
  extra_rdoc_files: []
152
228
  files:
153
229
  - .gitignore
230
+ - .travis.yml
154
231
  - Gemfile
155
232
  - HISTORY.md
156
233
  - README.md
@@ -219,6 +296,7 @@ files:
219
296
  - test/app/app/images/background.jpg
220
297
  - test/app/app/images/email.png
221
298
  - test/app/app/js/_ignoreme.js
299
+ - test/app/app/js/hello.2.js
222
300
  - test/app/app/js/hello.js
223
301
  - test/app/app/js/helloe.js
224
302
  - test/app/app/js/hi.coffee
@@ -260,21 +338,22 @@ rdoc_options: []
260
338
  require_paths:
261
339
  - lib
262
340
  required_ruby_version: !ruby/object:Gem::Requirement
263
- none: false
264
341
  requirements:
265
342
  - - ! '>='
266
343
  - !ruby/object:Gem::Version
267
344
  version: '0'
268
- required_rubygems_version: !ruby/object:Gem::Requirement
269
345
  none: false
346
+ required_rubygems_version: !ruby/object:Gem::Requirement
270
347
  requirements:
271
- - - ! '>'
348
+ - - ! '>='
272
349
  - !ruby/object:Gem::Version
273
- version: 1.3.1
350
+ version: '0'
351
+ none: false
274
352
  requirements: []
275
353
  rubyforge_project:
276
- rubygems_version: 1.8.17
354
+ rubygems_version: 1.8.24
277
355
  signing_key:
278
356
  specification_version: 3
279
357
  summary: Asset packager for Sinatra.
280
358
  test_files: []
359
+ has_rdoc: