slimmer 13.1.0 → 13.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 693441cb9f372f48dc2849316704699263af4fedafaaf8a777600a4b4632602f
4
- data.tar.gz: ccd22f2d51dd5f8d3c4f3698ecbf98f08f0c4c43c9d8ba0260861dcccf327f72
3
+ metadata.gz: 966481420a36ac4cbaf811706d2ae142b9ce1556c6b8be10ca682766cbe8e2e6
4
+ data.tar.gz: 79cb54e5f8d0db751cbc40ff3acd6c573395fec2e13e4bb9e43021b93c69a3a4
5
5
  SHA512:
6
- metadata.gz: f63463274d356cf8c63e5a752c0e57b085282a82b74d99fb7e41ce2e0bf8cad72a65c15696a89104af0485a9377060bf02050718a701d23b7a66da3d09606ca1
7
- data.tar.gz: 785e5fdf647fbe5b811d1b1e14d5248f758d799189e8864816b2b8d4ef918e16fdcd1106f3569479087580c1bd526142522fc1a2c32cef76a2febb498e139953
6
+ metadata.gz: cd9b2d065c5cc805cc92f84728fb4990352030ac25ad5f8ad024b5794e90bc52b82c04f08eb1a7adfbd45abef17849e2ae977d95f579f3d184d290af5a9a4d3b
7
+ data.tar.gz: d846dd0e2ce3edcb9503708e0c162e5899530e988abf6513a785bef995cc2193df948718892e3200d4408e3ee79b34aead7a9ccec4af042b6214a98f480444b7
@@ -1,4 +1,7 @@
1
- # Unreleased
1
+ # 13.2.0
2
+
3
+ * Upgrade Ruby version to 2.6.5. (#234)
4
+ * Fix linting issues. (#234)
2
5
 
3
6
  # 13.1.0
4
7
 
@@ -4,20 +4,21 @@ module Slimmer
4
4
  class App
5
5
  attr_accessor :logger
6
6
 
7
- def initialize(app, *args, &block)
7
+ def initialize(app, *args)
8
8
  options = args.first || {}
9
9
  @app = app
10
10
 
11
11
  logger = options[:logger] || NullLogger.instance
12
12
  self.logger = logger
13
13
  begin
14
- if logger.level == 0 # Log set to debug level
14
+ if logger.level.zero? # Log set to debug level
15
15
  unless options[:enable_debugging]
16
16
  self.logger = logger.dup
17
17
  self.logger.level = 1 # info
18
18
  end
19
19
  end
20
- rescue NoMethodError # In case logger doesn't respond_to? :level
20
+ rescue NoMethodError # rubocop:disable Lint/HandleExceptions
21
+ # In case logger doesn't respond_to? :level
21
22
  end
22
23
 
23
24
  if options.key? :template_path
@@ -60,7 +61,7 @@ module Slimmer
60
61
 
61
62
  def skip_slimmer_param?(env)
62
63
  skip = Rack::Request.new(env).params['skip_slimmer']
63
- skip and skip.to_i > 0
64
+ skip && skip.to_i.positive?
64
65
  end
65
66
 
66
67
  def skip_slimmer_header?(response)
@@ -69,8 +70,9 @@ module Slimmer
69
70
 
70
71
  def s(body)
71
72
  return body.to_s unless body.respond_to?(:each)
73
+
72
74
  b = ""
73
- body.each {|a| b << a }
75
+ body.each { |a| b << a }
74
76
  b
75
77
  end
76
78
 
@@ -87,17 +89,17 @@ module Slimmer
87
89
  GovukRequestId.value = env['HTTP_GOVUK_REQUEST_ID']
88
90
 
89
91
  rewritten_body = case response.status
90
- when 200
91
- @skin.success request, response, s(response.body)
92
- when 403
93
- @skin.error '403', s(response.body), request.env
94
- when 404
95
- @skin.error '404', s(response.body), request.env
96
- when 410
97
- @skin.error '410', s(response.body), request.env
98
- else
99
- @skin.error '500', s(response.body), request.env
100
- end
92
+ when 200
93
+ @skin.success request, response, s(response.body)
94
+ when 403
95
+ @skin.error '403', s(response.body), request.env
96
+ when 404
97
+ @skin.error '404', s(response.body), request.env
98
+ when 410
99
+ @skin.error '410', s(response.body), request.env
100
+ else
101
+ @skin.error '500', s(response.body), request.env
102
+ end
101
103
 
102
104
  rewritten_body = [rewritten_body] unless rewritten_body.respond_to?(:each)
103
105
  response.body = rewritten_body
@@ -107,7 +109,7 @@ module Slimmer
107
109
  end
108
110
 
109
111
  def strip_slimmer_headers(headers)
110
- headers.reject {|k, v| k =~ /\A#{Headers::HEADER_PREFIX}/ }
112
+ headers.reject { |k, _v| k =~ /\A#{Headers::HEADER_PREFIX}/ }
111
113
  end
112
114
  end
113
115
  end
@@ -5,7 +5,7 @@ module Slimmer
5
5
  InvalidHeader = Class.new(RuntimeError)
6
6
 
7
7
  # @private
8
- HEADER_PREFIX = "X-Slimmer"
8
+ HEADER_PREFIX = "X-Slimmer".freeze
9
9
 
10
10
  # @private
11
11
  SLIMMER_HEADER_MAPPING = {
@@ -20,40 +20,40 @@ module Slimmer
20
20
  skip: "Skip",
21
21
  template: "Template",
22
22
  remove_search: "Remove-Search",
23
- }
23
+ }.freeze
24
24
 
25
25
  # @private
26
- APPLICATION_NAME_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:application_name]}"
26
+ APPLICATION_NAME_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:application_name]}".freeze
27
27
 
28
28
  # @private
29
- FORMAT_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:format]}"
29
+ FORMAT_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:format]}".freeze
30
30
 
31
31
  # @private
32
- ORGANISATIONS_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:organisations]}"
32
+ ORGANISATIONS_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:organisations]}".freeze
33
33
 
34
34
  # @private
35
- WORLD_LOCATIONS_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:world_locations]}"
35
+ WORLD_LOCATIONS_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:world_locations]}".freeze
36
36
 
37
37
  # @private
38
- PAGE_OWNER_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:page_owner]}"
38
+ PAGE_OWNER_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:page_owner]}".freeze
39
39
 
40
40
  # @private
41
- RESULT_COUNT_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:result_count]}"
41
+ RESULT_COUNT_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:result_count]}".freeze
42
42
 
43
43
  # @private
44
- SEARCH_PATH_HEADER = "#{HEADER_PREFIX}-Search-Path"
44
+ SEARCH_PATH_HEADER = "#{HEADER_PREFIX}-Search-Path".freeze
45
45
 
46
46
  # @private
47
- SEARCH_PARAMETERS_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:search_parameters]}"
47
+ SEARCH_PARAMETERS_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:search_parameters]}".freeze
48
48
 
49
49
  # @private
50
- SKIP_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:skip]}"
50
+ SKIP_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:skip]}".freeze
51
51
 
52
52
  # @private
53
- TEMPLATE_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:template]}"
53
+ TEMPLATE_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:template]}".freeze
54
54
 
55
55
  # @private
56
- REMOVE_SEARCH_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:remove_search]}"
56
+ REMOVE_SEARCH_HEADER = "#{HEADER_PREFIX}-#{SLIMMER_HEADER_MAPPING[:remove_search]}".freeze
57
57
 
58
58
  # Set the "slimmer headers" to configure the page
59
59
  #
@@ -71,6 +71,7 @@ module Slimmer
71
71
  # @option hash [String] world_locations
72
72
  def set_slimmer_headers(hash)
73
73
  raise InvalidHeader if (hash.keys - SLIMMER_HEADER_MAPPING.keys).any?
74
+
74
75
  SLIMMER_HEADER_MAPPING.each do |hash_key, header_suffix|
75
76
  value = hash[hash_key]
76
77
  headers["#{HEADER_PREFIX}-#{header_suffix}"] = value.to_s if value
@@ -1,11 +1,11 @@
1
1
  module Slimmer::Processors
2
2
  class BodyInserter
3
- def initialize(source_id='wrapper', destination_id='wrapper')
3
+ def initialize(source_id = 'wrapper', destination_id = 'wrapper')
4
4
  @source_selector = '#' + source_id
5
5
  @destination_selector = '#' + destination_id
6
6
  end
7
7
 
8
- def filter(src,dest)
8
+ def filter(src, dest)
9
9
  body = Nokogiri::HTML.fragment(src.at_css(@source_selector).to_html)
10
10
  dest.at_css(@destination_selector).replace(body)
11
11
  end
@@ -13,5 +13,3 @@ module Slimmer::Processors
13
13
  end
14
14
  end
15
15
  end
16
-
17
-
@@ -1,6 +1,6 @@
1
1
  module Slimmer::Processors
2
2
  class FooterRemover
3
- def filter(src,dest)
3
+ def filter(src, _dest)
4
4
  footer = src.at_css("#footer")
5
5
  footer.remove if footer
6
6
  end
@@ -1,11 +1,11 @@
1
1
  module Slimmer::Processors
2
2
  class HeaderContextInserter
3
- def initialize(path='.header-context')
3
+ def initialize(path = '.header-context')
4
4
  @path = path
5
5
  end
6
6
 
7
- def filter(src,dest)
8
- if dest.at_css(@path) && replacement = src.at_css(@path)
7
+ def filter(src, dest)
8
+ if dest.at_css(@path) && (replacement = src.at_css(@path))
9
9
  header_context = src.fragment(replacement)
10
10
  dest.at_css(@path).replace(header_context)
11
11
  end
@@ -5,7 +5,7 @@ module Slimmer::Processors
5
5
  @app_name = app_name
6
6
  end
7
7
 
8
- def filter(src, dest)
8
+ def filter(_src, dest)
9
9
  head = dest.at_css('head')
10
10
 
11
11
  add_meta_tag('analytics:organisations', @headers[Slimmer::Headers::ORGANISATIONS_HEADER], head)
@@ -1,5 +1,4 @@
1
1
  class Slimmer::Processors::NavigationMover
2
-
3
2
  def initialize(skin)
4
3
  @skin = skin
5
4
  end
@@ -6,7 +6,7 @@ module Slimmer::Processors
6
6
  @response = response
7
7
  end
8
8
 
9
- def filter(content_document, page_template)
9
+ def filter(_content_document, page_template)
10
10
  search_form = page_template.at_css('form#search')
11
11
  if search_parameters && search_form
12
12
  search_parameters.each_pair do |name, value|
@@ -4,7 +4,7 @@ module Slimmer::Processors
4
4
  @response = response
5
5
  end
6
6
 
7
- def filter(content_document, page_template)
7
+ def filter(_content_document, page_template)
8
8
  if search_scope && page_template.at_css('form#search')
9
9
  page_template.at_css('form#search').attributes["action"].value = search_scope
10
10
  end
@@ -4,7 +4,7 @@ module Slimmer::Processors
4
4
  @headers = headers
5
5
  end
6
6
 
7
- def filter(src,dest)
7
+ def filter(_src, dest)
8
8
  if @headers.include?(Slimmer::Headers::REMOVE_SEARCH_HEADER)
9
9
  search = dest.at_css("#global-header #search")
10
10
  search.remove if search
@@ -2,8 +2,8 @@ module Slimmer::Processors
2
2
  class TagMover
3
3
  def filter(src, dest)
4
4
  move_tags(src, dest, 'script', dest_node: 'body', keys: %w(src inner_html))
5
- move_tags(src, dest, 'link', must_have: ['href'])
6
- move_tags(src, dest, 'meta', must_have: %w(name content), keys: ['name', 'content', 'http-equiv'], insertion_location: :top)
5
+ move_tags(src, dest, 'link', must_have: %w[href])
6
+ move_tags(src, dest, 'meta', must_have: %w(name content), keys: %w[name content http-equiv], insertion_location: :top)
7
7
  move_tags(src, dest, 'meta', must_have: %w(property content), keys: %w(property content), insertion_location: :top)
8
8
  end
9
9
 
@@ -12,13 +12,15 @@ module Slimmer::Processors
12
12
  end
13
13
 
14
14
  def tag_fingerprint(node, attrs)
15
- attrs.collect do |attr_name|
15
+ collected_attrs = attrs.collect do |attr_name|
16
16
  if attr_name == 'inner_html'
17
17
  node.content
18
18
  else
19
19
  node.has_attribute?(attr_name) ? node.attr(attr_name) : nil
20
20
  end
21
- end.compact.sort
21
+ end
22
+
23
+ collected_attrs.compact.sort
22
24
  end
23
25
 
24
26
  def wrap_node(src, node)
@@ -1,10 +1,10 @@
1
1
  module Slimmer::Processors
2
2
  class TitleInserter
3
- def filter(src,dest)
3
+ def filter(src, dest)
4
4
  title = src.at_css('head title')
5
5
  head = dest.at_xpath('/html/head')
6
6
  if head && title
7
- insert_title(title,head)
7
+ insert_title(title, head)
8
8
  end
9
9
  end
10
10
 
@@ -10,7 +10,7 @@ module Slimmer
10
10
  @asset_host = options[:asset_host]
11
11
 
12
12
  @logger = options[:logger] || NullLogger.instance
13
- @strict = options[:strict] || (%w{development test}.include?(ENV['RACK_ENV']))
13
+ @strict = options[:strict] || %w{development test}.include?(ENV['RACK_ENV'])
14
14
  end
15
15
 
16
16
  def template(template_name)
@@ -34,15 +34,15 @@ module Slimmer
34
34
  "#{host}templates/#{template_name}.html.erb"
35
35
  end
36
36
 
37
- def report_parse_errors_if_strict!(nokogiri_doc, description_for_error_message)
37
+ def report_parse_errors_if_strict!(nokogiri_doc, _description_for_error_message)
38
38
  nokogiri_doc
39
39
  end
40
40
 
41
41
  def parse_html(html, description_for_error_message)
42
42
  doc = Nokogiri::HTML.parse(html)
43
43
  if strict
44
- errors = doc.errors.select {|e| e.error?}.reject {|e| ignorable?(e)}
45
- if errors.size > 0
44
+ errors = doc.errors.select(&:error?).reject { |e| ignorable?(e) }
45
+ if !errors.empty?
46
46
  error = errors.first
47
47
  message = "In #{description_for_error_message}: '#{error.message}' at line #{error.line} col #{error.column} (code #{error.code}).\n"
48
48
  message << "Add ?skip_slimmer=1 to the url to show the raw backend request.\n\n"
@@ -59,7 +59,7 @@ module Slimmer
59
59
  lines = [""] + html.split("\n")
60
60
  from = [1, error.line - context_size].max
61
61
  to = [lines.size - 1, error.line + context_size].min
62
- context = (from..to).zip(lines[from..to]).map {|lineno, line| "%4d: %s" % [lineno, line] }
62
+ context = (from..to).zip(lines[from..to]).map { |lineno, line| "%4d: %s" % [lineno, line] } # rubocop:disable Style/FormatStringToken
63
63
  marker = " " * (error.column - 1) + "-----v"
64
64
  context.insert(context_size, marker)
65
65
  context.join("\n")
@@ -70,7 +70,7 @@ module Slimmer
70
70
  ignorable_codes.include?(error.code) || error.message.match(/Element script embeds close tag/) || error.message.match(/Unexpected end tag : noscript/)
71
71
  end
72
72
 
73
- def process(processors,body,template, rack_env)
73
+ def process(processors, body, template, _rack_env)
74
74
  logger.debug "Slimmer: starting skinning process"
75
75
  src = parse_html(body.to_s, "backend response")
76
76
  dest = parse_html(template, "template")
@@ -95,14 +95,14 @@ module Slimmer
95
95
  wrapper_id = options[:wrapper_id] || 'wrapper'
96
96
 
97
97
  processors = [
98
- Processors::TitleInserter.new(),
99
- Processors::TagMover.new(),
98
+ Processors::TitleInserter.new,
99
+ Processors::TagMover.new,
100
100
  Processors::NavigationMover.new(self),
101
- Processors::ConditionalCommentMover.new(),
101
+ Processors::ConditionalCommentMover.new,
102
102
  Processors::BodyInserter.new(wrapper_id),
103
103
  Processors::BodyClassCopier.new,
104
104
  Processors::InsideHeaderInserter.new,
105
- Processors::HeaderContextInserter.new(),
105
+ Processors::HeaderContextInserter.new,
106
106
  Processors::MetadataInserter.new(response, options[:app_name]),
107
107
  Processors::SearchParameterInserter.new(response),
108
108
  Processors::SearchPathSetter.new(response),
@@ -115,7 +115,7 @@ module Slimmer
115
115
 
116
116
  def error(template_name, body, rack_env)
117
117
  processors = [
118
- Processors::TitleInserter.new()
118
+ Processors::TitleInserter.new
119
119
  ]
120
120
  process(processors, body, template(template_name), rack_env)
121
121
  end
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '13.1.0'.freeze
2
+ VERSION = '13.2.0'.freeze
3
3
  end
@@ -6,7 +6,7 @@ namespace :slimmer do
6
6
  path_to_static = "../static/public"
7
7
  path_to_public = "public"
8
8
  commands = ["cd #{path_to_public}"]
9
- dirs_to_link = Dir.glob("../static/public/*") {|f|
9
+ Dir.glob("../static/public/*") { |f|
10
10
  commands << "ln -s #{path_to_static}/#{f}"
11
11
  }
12
12
  commands << ["cd .."]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.1.0
4
+ version: 13.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-22 00:00:00.000000000 Z
11
+ date: 2019-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - '='
186
186
  - !ruby/object:Gem::Version
187
- version: 3.4.2
187
+ version: 3.5.0
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - '='
193
193
  - !ruby/object:Gem::Version
194
- version: 3.4.2
194
+ version: 3.5.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: timecop
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 3.9.0
215
+ version: 3.11.5
216
216
  type: :development
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 3.9.0
222
+ version: 3.11.5
223
223
  description: Rack middleware for skinning pages using a specific template
224
224
  email:
225
225
  - govuk-dev@digital.cabinet-office.gov.uk
@@ -281,8 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
281
281
  - !ruby/object:Gem::Version
282
282
  version: '0'
283
283
  requirements: []
284
- rubyforge_project: slimmer
285
- rubygems_version: 2.7.6
284
+ rubygems_version: 3.0.3
286
285
  signing_key:
287
286
  specification_version: 4
288
287
  summary: Thinner than the skinner