slimmer 3.6.1 → 3.7.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/lib/slimmer.rb CHANGED
@@ -33,6 +33,7 @@ module Slimmer
33
33
  autoload :GoogleAnalyticsConfigurator, 'slimmer/processors/google_analytics_configurator'
34
34
  autoload :HeaderContextInserter, 'slimmer/processors/header_context_inserter'
35
35
  autoload :LogoClassInserter, 'slimmer/processors/logo_class_inserter'
36
+ autoload :MetaViewportRemover, 'slimmer/processors/meta_viewport_remover'
36
37
  autoload :RelatedItemsInserter, 'slimmer/processors/related_items_inserter'
37
38
  autoload :ReportAProblemInserter, 'slimmer/processors/report_a_problem_inserter'
38
39
  autoload :SearchIndexSetter, 'slimmer/processors/search_index_setter'
@@ -5,22 +5,24 @@ module Slimmer
5
5
  HEADER_PREFIX = "X-Slimmer"
6
6
 
7
7
  SLIMMER_HEADER_MAPPING = {
8
- section: "Section",
9
- need_id: "Need-ID",
10
- format: "Format",
11
- proposition: "Proposition",
12
- result_count: "Result-Count",
13
- template: "Template",
14
- skip: "Skip",
8
+ format: "Format",
9
+ need_id: "Need-ID",
10
+ proposition: "Proposition",
11
+ remove_meta_viewport: "Remove-Meta-Viewport",
12
+ result_count: "Result-Count",
13
+ section: "Section",
14
+ skip: "Skip",
15
+ template: "Template",
15
16
  }
16
17
 
17
- TEMPLATE_HEADER = "#{HEADER_PREFIX}-Template"
18
- SKIP_HEADER = "#{HEADER_PREFIX}-Skip"
19
- SEARCH_PATH_HEADER = "#{HEADER_PREFIX}-Search-Path"
20
- SEARCH_INDEX_HEADER = "#{HEADER_PREFIX}-Search-Index"
21
18
  ARTEFACT_HEADER = "#{HEADER_PREFIX}-Artefact"
22
19
  FORMAT_HEADER = "#{HEADER_PREFIX}-Format"
20
+ REMOVE_META_VIEWPORT = "#{HEADER_PREFIX}-Remove-Meta-Viewport"
23
21
  RESULT_COUNT_HEADER = "#{HEADER_PREFIX}-Result-Count"
22
+ SEARCH_INDEX_HEADER = "#{HEADER_PREFIX}-Search-Index"
23
+ SEARCH_PATH_HEADER = "#{HEADER_PREFIX}-Search-Path"
24
+ SKIP_HEADER = "#{HEADER_PREFIX}-Skip"
25
+ TEMPLATE_HEADER = "#{HEADER_PREFIX}-Template"
24
26
 
25
27
  def set_slimmer_headers(hash)
26
28
  raise InvalidHeader if (hash.keys - SLIMMER_HEADER_MAPPING.keys).any?
@@ -0,0 +1,13 @@
1
+ module Slimmer::Processors
2
+ class MetaViewportRemover
3
+ def initialize(response)
4
+ @response = response
5
+ end
6
+
7
+ def filter(src, dest)
8
+ if @response.headers["X-Slimmer-Remove-Meta-Viewport"] == "true"
9
+ dest.at_xpath('//head//meta[@name="viewport"]').remove
10
+ end
11
+ end
12
+ end
13
+ end
data/lib/slimmer/skin.rb CHANGED
@@ -140,6 +140,7 @@ module Slimmer
140
140
  Processors::LogoClassInserter.new(artefact),
141
141
  Processors::ReportAProblemInserter.new(self, source_request.url),
142
142
  Processors::SearchIndexSetter.new(response),
143
+ Processors::MetaViewportRemover.new(response),
143
144
  ]
144
145
 
145
146
  template_name = response.headers[Headers::TEMPLATE_HEADER] || 'wrapper'
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '3.6.1'
2
+ VERSION = '3.7.0'
3
3
  end
data/test/headers_test.rb CHANGED
@@ -54,6 +54,15 @@ class HeadersTest < MiniTest::Unit::TestCase
54
54
  set_slimmer_headers seccion: "wrong"
55
55
  end
56
56
  end
57
+
58
+ def test_should_not_have_meta_viewport_header_set
59
+ assert_equal nil, headers["X-Slimmer-Remove-Meta-Viewport"]
60
+ end
61
+
62
+ def test_should_set_meta_viewport_header
63
+ set_slimmer_headers remove_meta_viewport: true
64
+ assert_equal "true", headers["X-Slimmer-Remove-Meta-Viewport"]
65
+ end
57
66
  end
58
67
 
59
68
  describe Slimmer::Headers do
@@ -0,0 +1,25 @@
1
+ require_relative "../test_helper"
2
+
3
+ class MetaViewportRemover < SlimmerIntegrationTest
4
+ TEMPLATE = <<-END
5
+ <html>
6
+ <head>
7
+ <meta name="viewport" content="width=device-width, intial-scale=1">
8
+ </head>
9
+ <body>
10
+ <div><div id="wrapper"></div></div>
11
+ </body>
12
+ </html>
13
+ END
14
+
15
+ def test_should_leave_all_content_as_it_is_if_there_is_not_a_meta_viewport_header_set
16
+ given_response 200, TEMPLATE, {}
17
+ assert_equal "<meta name=\"viewport\" content=\"width=device-width, intial-scale=1\">",
18
+ Nokogiri::HTML.parse(last_response.body).at_xpath('//head//meta[@name="viewport"]').to_s
19
+ end
20
+
21
+ def test_should_remove_the_meta_viewport_if_the_relevant_header_is_set
22
+ given_response 200, TEMPLATE, {Slimmer::Headers::REMOVE_META_VIEWPORT => "true"}
23
+ assert_nil Nokogiri::HTML.parse(last_response.body).at_xpath('//head//meta[@name="viewport"]')
24
+ end
25
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: slimmer
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 3.6.1
5
+ version: 3.7.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ben Griffiths
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2012-10-01 00:00:00 Z
14
+ date: 2012-10-09 00:00:00 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: nokogiri
@@ -201,6 +201,7 @@ files:
201
201
  - lib/slimmer/processors/body_inserter.rb
202
202
  - lib/slimmer/processors/admin_title_inserter.rb
203
203
  - lib/slimmer/processors/report_a_problem_inserter.rb
204
+ - lib/slimmer/processors/meta_viewport_remover.rb
204
205
  - lib/slimmer/processors/section_inserter.rb
205
206
  - lib/slimmer/processors/footer_remover.rb
206
207
  - lib/slimmer/headers.rb
@@ -215,6 +216,7 @@ files:
215
216
  - test/fixtures/wrapper.html.erb
216
217
  - test/fixtures/report_a_problem.raw.html.erb
217
218
  - test/skin_test.rb
219
+ - test/processors/meta_viewport_remover_test.rb
218
220
  - test/processors/logo_class_inserter_test.rb
219
221
  - test/processors/search_index_setter_test.rb
220
222
  - test/processors/google_analytics_test.rb
@@ -241,7 +243,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
241
243
  requirements:
242
244
  - - ">="
243
245
  - !ruby/object:Gem::Version
244
- hash: 4260756547194608291
246
+ hash: 1998055775306667395
245
247
  segments:
246
248
  - 0
247
249
  version: "0"
@@ -250,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
250
252
  requirements:
251
253
  - - ">="
252
254
  - !ruby/object:Gem::Version
253
- hash: 4260756547194608291
255
+ hash: 1998055775306667395
254
256
  segments:
255
257
  - 0
256
258
  version: "0"
@@ -270,6 +272,7 @@ test_files:
270
272
  - test/fixtures/wrapper.html.erb
271
273
  - test/fixtures/report_a_problem.raw.html.erb
272
274
  - test/skin_test.rb
275
+ - test/processors/meta_viewport_remover_test.rb
273
276
  - test/processors/logo_class_inserter_test.rb
274
277
  - test/processors/search_index_setter_test.rb
275
278
  - test/processors/google_analytics_test.rb