slimmer 4.0.1 → 4.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.
- data/CHANGELOG.md +4 -0
- data/lib/slimmer.rb +1 -0
- data/lib/slimmer/headers.rb +2 -0
- data/lib/slimmer/processors/alpha_label_inserter.rb +35 -0
- data/lib/slimmer/skin.rb +2 -1
- data/lib/slimmer/test_templates/alpha_label.html +1 -0
- data/lib/slimmer/version.rb +1 -1
- data/test/fixtures/alpha_label.html.erb +1 -0
- data/test/processors/alpha_label_inserter_test.rb +42 -0
- data/test/test_helper.rb +1 -0
- data/test/typical_usage_test.rb +15 -1
- metadata +10 -4
data/CHANGELOG.md
CHANGED
data/lib/slimmer.rb
CHANGED
@@ -23,6 +23,7 @@ module Slimmer
|
|
23
23
|
autoload :Artefact, 'slimmer/artefact'
|
24
24
|
|
25
25
|
module Processors
|
26
|
+
autoload :AlphaLabelInserter, 'slimmer/processors/alpha_label_inserter'
|
26
27
|
autoload :BetaNoticeInserter, 'slimmer/processors/beta_notice_inserter'
|
27
28
|
autoload :BetaLabelInserter, 'slimmer/processors/beta_label_inserter'
|
28
29
|
autoload :BodyClassCopier, 'slimmer/processors/body_class_copier'
|
data/lib/slimmer/headers.rb
CHANGED
@@ -5,6 +5,7 @@ module Slimmer
|
|
5
5
|
HEADER_PREFIX = "X-Slimmer"
|
6
6
|
|
7
7
|
SLIMMER_HEADER_MAPPING = {
|
8
|
+
alpha_label: "Alpha-Label",
|
8
9
|
application_name: "Application-Name",
|
9
10
|
beta: "Beta",
|
10
11
|
beta_label: "Beta-Label",
|
@@ -20,6 +21,7 @@ module Slimmer
|
|
20
21
|
template: "Template",
|
21
22
|
}
|
22
23
|
|
24
|
+
ALPHA_LABEL = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:alpha_label]}"
|
23
25
|
APPLICATION_NAME_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:application_name]}"
|
24
26
|
ARTEFACT_HEADER = "#{HEADER_PREFIX}-Artefact"
|
25
27
|
BETA_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:beta]}"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Slimmer::Processors
|
2
|
+
class AlphaLabelInserter
|
3
|
+
def initialize(skin, headers)
|
4
|
+
@skin = skin
|
5
|
+
@headers = headers
|
6
|
+
end
|
7
|
+
|
8
|
+
def filter(content_document, page_template)
|
9
|
+
if should_add_alpha_label?
|
10
|
+
if position == 'before'
|
11
|
+
page_template.at_css(selector).add_previous_sibling(alpha_label_block)
|
12
|
+
elsif position == 'after'
|
13
|
+
page_template.at_css(selector).add_next_sibling(alpha_label_block)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def should_add_alpha_label?
|
19
|
+
!! @headers[Slimmer::Headers::ALPHA_LABEL]
|
20
|
+
end
|
21
|
+
|
22
|
+
def alpha_label_block
|
23
|
+
@alpha_label_block ||= @skin.template('alpha_label').to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
def selector
|
28
|
+
@headers[Slimmer::Headers::ALPHA_LABEL].gsub(/.*:/, '')
|
29
|
+
end
|
30
|
+
|
31
|
+
def position
|
32
|
+
@headers[Slimmer::Headers::ALPHA_LABEL].gsub(/:.*/, '')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/slimmer/skin.rb
CHANGED
@@ -131,7 +131,8 @@ module Slimmer
|
|
131
131
|
Processors::ReportAProblemInserter.new(self, source_request.url, response.headers),
|
132
132
|
Processors::MetaViewportRemover.new(response),
|
133
133
|
Processors::BetaNoticeInserter.new(self, response.headers),
|
134
|
-
Processors::BetaLabelInserter.new(self, response.headers)
|
134
|
+
Processors::BetaLabelInserter.new(self, response.headers),
|
135
|
+
Processors::AlphaLabelInserter.new(self, response.headers),
|
135
136
|
]
|
136
137
|
|
137
138
|
template_name = response.headers[Headers::TEMPLATE_HEADER] || 'wrapper'
|
@@ -0,0 +1 @@
|
|
1
|
+
<div class="alpha-label"><p>This page is ALPHA.</p></div>
|
data/lib/slimmer/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
<div class="alpha-label"><p>This page is ALPHA.</p></div>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require_relative "../test_helper"
|
2
|
+
|
3
|
+
class AlphaLabelInserterTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
super
|
7
|
+
alpha_label_block = '<div class="alpha-label"><p>This page is ALPHA.</p></div>'
|
8
|
+
@skin = stub("Skin", :template => alpha_label_block)
|
9
|
+
@template = as_nokogiri %{
|
10
|
+
<html><body><div><div id="wrapper"><header id="main">GOV.UK</header></div></div></body></html>
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_should_add_alpha_label_after
|
15
|
+
|
16
|
+
headers = {
|
17
|
+
Slimmer::Headers::ALPHA_LABEL => "after:header#main"
|
18
|
+
}
|
19
|
+
|
20
|
+
Slimmer::Processors::AlphaLabelInserter.new(@skin, headers).filter(nil, @template)
|
21
|
+
|
22
|
+
assert_in @template, '#main + .alpha-label'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_should_add_alpha_label_before
|
26
|
+
headers = {
|
27
|
+
Slimmer::Headers::ALPHA_LABEL => "before:header#main"
|
28
|
+
}
|
29
|
+
|
30
|
+
Slimmer::Processors::AlphaLabelInserter.new(@skin, headers).filter(nil, @template)
|
31
|
+
|
32
|
+
assert_in @template, '.alpha-label + #main'
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_should_not_add_alpha_label
|
36
|
+
headers = {}
|
37
|
+
|
38
|
+
Slimmer::Processors::AlphaLabelInserter.new(@skin, headers).filter(nil, @template)
|
39
|
+
|
40
|
+
assert_not_in @template, '.alpha-label'
|
41
|
+
end
|
42
|
+
end
|
data/test/test_helper.rb
CHANGED
data/test/typical_usage_test.rb
CHANGED
@@ -261,12 +261,26 @@ module TypicalUsage
|
|
261
261
|
<div id="wrapper">The body of the page</div>
|
262
262
|
</body>
|
263
263
|
</html>
|
264
|
-
}, {Slimmer::Headers::BETA_LABEL => 'after:#wrapper'}
|
264
|
+
}, { Slimmer::Headers::BETA_LABEL => 'after:#wrapper' }
|
265
265
|
|
266
266
|
assert_rendered_in_template '.beta-label'
|
267
267
|
end
|
268
268
|
end
|
269
269
|
|
270
|
+
class AlphaLabelInserterTest < SlimmerIntegrationTest
|
271
|
+
def test_should_add_alpha_label
|
272
|
+
given_response 200, %{
|
273
|
+
<html>
|
274
|
+
<body class="wibble">
|
275
|
+
<div id="wrapper">The body of the page</div>
|
276
|
+
</body>
|
277
|
+
</html>
|
278
|
+
}, { Slimmer::Headers::ALPHA_LABEL => 'after:#wrapper' }
|
279
|
+
|
280
|
+
assert_rendered_in_template '.alpha-label'
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
270
284
|
class Error500ResponseTest < SlimmerIntegrationTest
|
271
285
|
include Rack::Test::Methods
|
272
286
|
|
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: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-06-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -268,6 +268,7 @@ files:
|
|
268
268
|
- lib/slimmer/skin.rb
|
269
269
|
- lib/slimmer/app.rb
|
270
270
|
- lib/slimmer/test_templates/header_footer_only.html
|
271
|
+
- lib/slimmer/test_templates/alpha_label.html
|
271
272
|
- lib/slimmer/test_templates/wrapper.html
|
272
273
|
- lib/slimmer/test_templates/beta_notice.html
|
273
274
|
- lib/slimmer/test_templates/beta_label.html
|
@@ -288,6 +289,7 @@ files:
|
|
288
289
|
- lib/slimmer/processors/report_a_problem_inserter.rb
|
289
290
|
- lib/slimmer/processors/title_inserter.rb
|
290
291
|
- lib/slimmer/processors/body_inserter.rb
|
292
|
+
- lib/slimmer/processors/alpha_label_inserter.rb
|
291
293
|
- lib/slimmer/processors/footer_remover.rb
|
292
294
|
- lib/slimmer/processors/beta_notice_inserter.rb
|
293
295
|
- lib/slimmer/processors/related_items_inserter.rb
|
@@ -304,6 +306,7 @@ files:
|
|
304
306
|
- test/fixtures/wrapper.html.erb
|
305
307
|
- test/fixtures/500.html.erb
|
306
308
|
- test/fixtures/proposition_menu.html.erb
|
309
|
+
- test/fixtures/alpha_label.html.erb
|
307
310
|
- test/fixtures/404.html.erb
|
308
311
|
- test/fixtures/report_a_problem.raw.html.erb
|
309
312
|
- test/fixtures/beta_label.html.erb
|
@@ -319,6 +322,7 @@ files:
|
|
319
322
|
- test/processors/search_path_setter_test.rb
|
320
323
|
- test/processors/google_analytics_test.rb
|
321
324
|
- test/processors/meta_viewport_remover_test.rb
|
325
|
+
- test/processors/alpha_label_inserter_test.rb
|
322
326
|
- test/processors/section_inserter_test.rb
|
323
327
|
- test/processors/report_a_problem_inserter_test.rb
|
324
328
|
- test/processors/tag_mover_test.rb
|
@@ -339,7 +343,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
339
343
|
version: '0'
|
340
344
|
segments:
|
341
345
|
- 0
|
342
|
-
hash: -
|
346
|
+
hash: -2143618560048917662
|
343
347
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
344
348
|
none: false
|
345
349
|
requirements:
|
@@ -348,7 +352,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
348
352
|
version: '0'
|
349
353
|
segments:
|
350
354
|
- 0
|
351
|
-
hash: -
|
355
|
+
hash: -2143618560048917662
|
352
356
|
requirements: []
|
353
357
|
rubyforge_project: slimmer
|
354
358
|
rubygems_version: 1.8.23
|
@@ -364,6 +368,7 @@ test_files:
|
|
364
368
|
- test/fixtures/wrapper.html.erb
|
365
369
|
- test/fixtures/500.html.erb
|
366
370
|
- test/fixtures/proposition_menu.html.erb
|
371
|
+
- test/fixtures/alpha_label.html.erb
|
367
372
|
- test/fixtures/404.html.erb
|
368
373
|
- test/fixtures/report_a_problem.raw.html.erb
|
369
374
|
- test/fixtures/beta_label.html.erb
|
@@ -379,6 +384,7 @@ test_files:
|
|
379
384
|
- test/processors/search_path_setter_test.rb
|
380
385
|
- test/processors/google_analytics_test.rb
|
381
386
|
- test/processors/meta_viewport_remover_test.rb
|
387
|
+
- test/processors/alpha_label_inserter_test.rb
|
382
388
|
- test/processors/section_inserter_test.rb
|
383
389
|
- test/processors/report_a_problem_inserter_test.rb
|
384
390
|
- test/processors/tag_mover_test.rb
|