slimmer 3.6.1 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
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