slimmer 5.0.0 → 5.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +5 -0
- data/lib/slimmer.rb +0 -10
- data/lib/slimmer/app.rb +2 -0
- data/lib/slimmer/processors/meta_viewport_remover.rb +11 -5
- data/lib/slimmer/skin.rb +1 -1
- data/lib/slimmer/version.rb +1 -1
- data/test/fixtures/410.html.erb +13 -0
- data/test/processors/meta_viewport_remover_test.rb +14 -0
- data/test/test_helper.rb +5 -6
- data/test/typical_usage_test.rb +27 -6
- metadata +39 -37
data/CHANGELOG.md
CHANGED
data/lib/slimmer.rb
CHANGED
@@ -1,8 +1,3 @@
|
|
1
|
-
#.....................................................
|
2
|
-
#"""""" Look, Gradiented-Rounded corners.... """""
|
3
|
-
#////////////////////////////////////////////////////////////////
|
4
|
-
###################################################################
|
5
|
-
|
6
1
|
require 'nokogiri'
|
7
2
|
require 'erb'
|
8
3
|
require 'plek'
|
@@ -52,8 +47,3 @@ module Slimmer
|
|
52
47
|
class TemplateNotFoundException < StandardError; end
|
53
48
|
class CouldNotRetrieveTemplate < StandardError; end
|
54
49
|
end
|
55
|
-
|
56
|
-
######################################################################
|
57
|
-
#///////////////////////////////////////////////////////////////////
|
58
|
-
#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
59
|
-
#.......................................................
|
data/lib/slimmer/app.rb
CHANGED
@@ -94,6 +94,8 @@ module Slimmer
|
|
94
94
|
@skin.success request, response, s(response.body)
|
95
95
|
when 404
|
96
96
|
@skin.error '404', s(response.body), request.env
|
97
|
+
when 410
|
98
|
+
@skin.error '410', s(response.body), request.env
|
97
99
|
else
|
98
100
|
@skin.error '500', s(response.body), request.env
|
99
101
|
end
|
@@ -1,13 +1,19 @@
|
|
1
1
|
module Slimmer::Processors
|
2
2
|
class MetaViewportRemover
|
3
|
-
def initialize(
|
4
|
-
@
|
3
|
+
def initialize(skin, headers)
|
4
|
+
@skin = skin
|
5
|
+
@headers = headers
|
5
6
|
end
|
6
7
|
|
7
|
-
def filter(
|
8
|
-
if
|
9
|
-
|
8
|
+
def filter(content_document, page_template)
|
9
|
+
if should_remove_meta_viewport?
|
10
|
+
viewport = page_template.at_xpath('//head//meta[@name="viewport"]')
|
11
|
+
viewport.remove if viewport
|
10
12
|
end
|
11
13
|
end
|
14
|
+
|
15
|
+
def should_remove_meta_viewport?
|
16
|
+
!! @headers[Slimmer::Headers::REMOVE_META_VIEWPORT]
|
17
|
+
end
|
12
18
|
end
|
13
19
|
end
|
data/lib/slimmer/skin.rb
CHANGED
@@ -126,7 +126,7 @@ module Slimmer
|
|
126
126
|
source_request.url,
|
127
127
|
response.headers,
|
128
128
|
wrapper_id),
|
129
|
-
Processors::MetaViewportRemover.new(response),
|
129
|
+
Processors::MetaViewportRemover.new(self, response.headers),
|
130
130
|
Processors::BetaNoticeInserter.new(self, response.headers),
|
131
131
|
Processors::BetaLabelInserter.new(self, response.headers),
|
132
132
|
Processors::AlphaLabelInserter.new(self, response.headers),
|
data/lib/slimmer/version.rb
CHANGED
@@ -12,12 +12,26 @@ class MetaViewportRemover < SlimmerIntegrationTest
|
|
12
12
|
</html>
|
13
13
|
END
|
14
14
|
|
15
|
+
NO_VIEWPORT_TEMPLATE = <<-END
|
16
|
+
<html>
|
17
|
+
<head>
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div><div id="wrapper"></div></div>
|
21
|
+
</body>
|
22
|
+
</html>
|
23
|
+
END
|
24
|
+
|
15
25
|
def test_should_leave_all_content_as_it_is_if_there_is_not_a_meta_viewport_header_set
|
16
26
|
given_response 200, TEMPLATE, {}
|
17
27
|
assert_equal "<meta name=\"viewport\" content=\"width=device-width, intial-scale=1\">",
|
18
28
|
Nokogiri::HTML.parse(last_response.body).at_xpath('//head//meta[@name="viewport"]').to_s
|
19
29
|
end
|
20
30
|
|
31
|
+
def test_should_not_fail_if_there_is_no_viewport_meta
|
32
|
+
given_response 200, NO_VIEWPORT_TEMPLATE, {Slimmer::Headers::REMOVE_META_VIEWPORT => "true"}
|
33
|
+
end
|
34
|
+
|
21
35
|
def test_should_remove_the_meta_viewport_if_the_relevant_header_is_set
|
22
36
|
given_response 200, TEMPLATE, {Slimmer::Headers::REMOVE_META_VIEWPORT => "true"}
|
23
37
|
assert_nil Nokogiri::HTML.parse(last_response.body).at_xpath('//head//meta[@name="viewport"]')
|
data/test/test_helper.rb
CHANGED
@@ -85,6 +85,7 @@ class SlimmerIntegrationTest < MiniTest::Test
|
|
85
85
|
template_name = case code
|
86
86
|
when 200 then 'wrapper'
|
87
87
|
when 404 then '404'
|
88
|
+
when 410 then '410'
|
88
89
|
else '500'
|
89
90
|
end
|
90
91
|
|
@@ -114,6 +115,7 @@ class SlimmerIntegrationTest < MiniTest::Test
|
|
114
115
|
refute_match /#{Regexp.escape(content)}/, last_response.body
|
115
116
|
end
|
116
117
|
|
118
|
+
# content can be a string or a Regexp
|
117
119
|
def assert_rendered_in_template(selector, content=nil, message=nil)
|
118
120
|
unless message
|
119
121
|
if content
|
@@ -127,12 +129,9 @@ class SlimmerIntegrationTest < MiniTest::Test
|
|
127
129
|
assert matched_elements.length > 0, message + ", but selector not found."
|
128
130
|
|
129
131
|
if content
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
found_match = matched_elements.inject(false) { |had_match, element| had_match || element.inner_html == content }
|
134
|
-
end
|
135
|
-
assert found_match, message + ". The selector was found but not with \"#{content}\"."
|
132
|
+
inner_htmls = matched_elements.map(&:inner_html)
|
133
|
+
found_match = inner_htmls.grep(content).any? # grep matches strings or Regexps
|
134
|
+
assert found_match, message + ". The selector was found but with different content: \"#{inner_htmls.join('", ')}\""
|
136
135
|
end
|
137
136
|
end
|
138
137
|
|
data/test/typical_usage_test.rb
CHANGED
@@ -284,8 +284,6 @@ module TypicalUsage
|
|
284
284
|
end
|
285
285
|
|
286
286
|
class Error500ResponseTest < SlimmerIntegrationTest
|
287
|
-
include Rack::Test::Methods
|
288
|
-
|
289
287
|
given_response 500, %{
|
290
288
|
<html>
|
291
289
|
<head><title>500 Error</title>
|
@@ -313,8 +311,6 @@ module TypicalUsage
|
|
313
311
|
end
|
314
312
|
|
315
313
|
class Error404ResponseTest < SlimmerIntegrationTest
|
316
|
-
include Rack::Test::Methods
|
317
|
-
|
318
314
|
given_response 404, %{
|
319
315
|
<html>
|
320
316
|
<head><title>404 Missing</title>
|
@@ -342,8 +338,6 @@ module TypicalUsage
|
|
342
338
|
end
|
343
339
|
|
344
340
|
class Error406ResponseTest < SlimmerIntegrationTest
|
345
|
-
include Rack::Test::Methods
|
346
|
-
|
347
341
|
given_response 406, %{
|
348
342
|
<html>
|
349
343
|
<head><title>406 Not Acceptable</title>
|
@@ -370,6 +364,33 @@ module TypicalUsage
|
|
370
364
|
end
|
371
365
|
end
|
372
366
|
|
367
|
+
class Error410ResponseTest < SlimmerIntegrationTest
|
368
|
+
given_response 410, %{
|
369
|
+
<html>
|
370
|
+
<head><title>410 Gone</title>
|
371
|
+
<meta name="something" content="yes">
|
372
|
+
<script src="blah.js"></script>
|
373
|
+
<link href="app.css" rel="stylesheet" type="text/css">
|
374
|
+
</head>
|
375
|
+
<body class="body_class">
|
376
|
+
<div id="wrapper"><p class='message'>Something bad happened</p></div>
|
377
|
+
</body>
|
378
|
+
</html>
|
379
|
+
}
|
380
|
+
|
381
|
+
def test_should_not_replace_the_wrapper_using_the_app_response
|
382
|
+
assert_not_rendered_in_template "Something bad happened"
|
383
|
+
end
|
384
|
+
|
385
|
+
def test_should_include_default_410_error_message
|
386
|
+
assert_rendered_in_template "body .content header h1", "That's gone now, sorry."
|
387
|
+
end
|
388
|
+
|
389
|
+
def test_should_replace_the_title_using_the_app_response
|
390
|
+
assert_rendered_in_template "head title", "410 Gone"
|
391
|
+
end
|
392
|
+
end
|
393
|
+
|
373
394
|
class ArbitraryWrapperIdTest < SlimmerIntegrationTest
|
374
395
|
|
375
396
|
given_response 200, %{
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-11-26 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
17
|
-
requirement: &
|
17
|
+
requirement: &7909580 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.5.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *7909580
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rack
|
28
|
-
requirement: &
|
28
|
+
requirement: &7937280 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,21 +33,21 @@ dependencies:
|
|
33
33
|
version: 1.3.5
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *7937280
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: plek
|
39
|
-
requirement: &
|
39
|
+
requirement: &7936200 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version:
|
44
|
+
version: 1.1.0
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *7936200
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: json
|
50
|
-
requirement: &
|
50
|
+
requirement: &7934600 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *7934600
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: null_logger
|
61
|
-
requirement: &
|
61
|
+
requirement: &7933600 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *7933600
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rest-client
|
72
|
-
requirement: &
|
72
|
+
requirement: &7931940 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: '0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *7931940
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: activesupport
|
83
|
-
requirement: &
|
83
|
+
requirement: &7931220 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,10 +88,10 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :runtime
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *7931220
|
92
92
|
- !ruby/object:Gem::Dependency
|
93
93
|
name: minitest
|
94
|
-
requirement: &
|
94
|
+
requirement: &7943920 !ruby/object:Gem::Requirement
|
95
95
|
none: false
|
96
96
|
requirements:
|
97
97
|
- - ~>
|
@@ -99,10 +99,10 @@ dependencies:
|
|
99
99
|
version: '5.4'
|
100
100
|
type: :development
|
101
101
|
prerelease: false
|
102
|
-
version_requirements: *
|
102
|
+
version_requirements: *7943920
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rake
|
105
|
-
requirement: &
|
105
|
+
requirement: &7942880 !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
@@ -110,10 +110,10 @@ dependencies:
|
|
110
110
|
version: 0.9.2.2
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
|
-
version_requirements: *
|
113
|
+
version_requirements: *7942880
|
114
114
|
- !ruby/object:Gem::Dependency
|
115
115
|
name: rack-test
|
116
|
-
requirement: &
|
116
|
+
requirement: &7940820 !ruby/object:Gem::Requirement
|
117
117
|
none: false
|
118
118
|
requirements:
|
119
119
|
- - ~>
|
@@ -121,10 +121,10 @@ dependencies:
|
|
121
121
|
version: 0.6.1
|
122
122
|
type: :development
|
123
123
|
prerelease: false
|
124
|
-
version_requirements: *
|
124
|
+
version_requirements: *7940820
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: mocha
|
127
|
-
requirement: &
|
127
|
+
requirement: &7939500 !ruby/object:Gem::Requirement
|
128
128
|
none: false
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
@@ -132,10 +132,10 @@ dependencies:
|
|
132
132
|
version: '1.1'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
|
-
version_requirements: *
|
135
|
+
version_requirements: *7939500
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
137
|
name: webmock
|
138
|
-
requirement: &
|
138
|
+
requirement: &7938000 !ruby/object:Gem::Requirement
|
139
139
|
none: false
|
140
140
|
requirements:
|
141
141
|
- - =
|
@@ -143,10 +143,10 @@ dependencies:
|
|
143
143
|
version: 1.18.0
|
144
144
|
type: :development
|
145
145
|
prerelease: false
|
146
|
-
version_requirements: *
|
146
|
+
version_requirements: *7938000
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: therubyracer
|
149
|
-
requirement: &
|
149
|
+
requirement: &7965480 !ruby/object:Gem::Requirement
|
150
150
|
none: false
|
151
151
|
requirements:
|
152
152
|
- - ~>
|
@@ -154,10 +154,10 @@ dependencies:
|
|
154
154
|
version: 0.10.2
|
155
155
|
type: :development
|
156
156
|
prerelease: false
|
157
|
-
version_requirements: *
|
157
|
+
version_requirements: *7965480
|
158
158
|
- !ruby/object:Gem::Dependency
|
159
159
|
name: gem_publisher
|
160
|
-
requirement: &
|
160
|
+
requirement: &7963760 !ruby/object:Gem::Requirement
|
161
161
|
none: false
|
162
162
|
requirements:
|
163
163
|
- - ~>
|
@@ -165,10 +165,10 @@ dependencies:
|
|
165
165
|
version: 1.1.1
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
|
-
version_requirements: *
|
168
|
+
version_requirements: *7963760
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
170
|
name: gds-api-adapters
|
171
|
-
requirement: &
|
171
|
+
requirement: &7962140 !ruby/object:Gem::Requirement
|
172
172
|
none: false
|
173
173
|
requirements:
|
174
174
|
- - =
|
@@ -176,10 +176,10 @@ dependencies:
|
|
176
176
|
version: 2.7.1
|
177
177
|
type: :development
|
178
178
|
prerelease: false
|
179
|
-
version_requirements: *
|
179
|
+
version_requirements: *7962140
|
180
180
|
- !ruby/object:Gem::Dependency
|
181
181
|
name: timecop
|
182
|
-
requirement: &
|
182
|
+
requirement: &7961060 !ruby/object:Gem::Requirement
|
183
183
|
none: false
|
184
184
|
requirements:
|
185
185
|
- - ~>
|
@@ -187,7 +187,7 @@ dependencies:
|
|
187
187
|
version: 0.5.1
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
|
-
version_requirements: *
|
190
|
+
version_requirements: *7961060
|
191
191
|
description: Rack middleware for skinning pages using a specific template
|
192
192
|
email:
|
193
193
|
- bengriffiths@gmail.com
|
@@ -248,6 +248,7 @@ files:
|
|
248
248
|
- test/fixtures/wrapper.html.erb
|
249
249
|
- test/fixtures/500.html.erb
|
250
250
|
- test/fixtures/proposition_menu.html.erb
|
251
|
+
- test/fixtures/410.html.erb
|
251
252
|
- test/fixtures/alpha_label.html.erb
|
252
253
|
- test/fixtures/404.html.erb
|
253
254
|
- test/fixtures/report_a_problem.raw.html.erb
|
@@ -287,7 +288,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
287
288
|
version: '0'
|
288
289
|
segments:
|
289
290
|
- 0
|
290
|
-
hash:
|
291
|
+
hash: 4210104477749647125
|
291
292
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
292
293
|
none: false
|
293
294
|
requirements:
|
@@ -296,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
296
297
|
version: '0'
|
297
298
|
segments:
|
298
299
|
- 0
|
299
|
-
hash:
|
300
|
+
hash: 4210104477749647125
|
300
301
|
requirements: []
|
301
302
|
rubyforge_project: slimmer
|
302
303
|
rubygems_version: 1.8.11
|
@@ -313,6 +314,7 @@ test_files:
|
|
313
314
|
- test/fixtures/wrapper.html.erb
|
314
315
|
- test/fixtures/500.html.erb
|
315
316
|
- test/fixtures/proposition_menu.html.erb
|
317
|
+
- test/fixtures/410.html.erb
|
316
318
|
- test/fixtures/alpha_label.html.erb
|
317
319
|
- test/fixtures/404.html.erb
|
318
320
|
- test/fixtures/report_a_problem.raw.html.erb
|