slimmer 13.2.0 → 14.0.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: 966481420a36ac4cbaf811706d2ae142b9ce1556c6b8be10ca682766cbe8e2e6
4
- data.tar.gz: 79cb54e5f8d0db751cbc40ff3acd6c573395fec2e13e4bb9e43021b93c69a3a4
3
+ metadata.gz: 5e29edb1500e56cda58cd5b43463f19beb2b8e1e53a2a0c0c7bf4f88b1542c3d
4
+ data.tar.gz: 90a425692e649c7f941f9f45a8966babff2f31dc888ada70d47ea86b7b365002
5
5
  SHA512:
6
- metadata.gz: cd9b2d065c5cc805cc92f84728fb4990352030ac25ad5f8ad024b5794e90bc52b82c04f08eb1a7adfbd45abef17849e2ae977d95f579f3d184d290af5a9a4d3b
7
- data.tar.gz: d846dd0e2ce3edcb9503708e0c162e5899530e988abf6513a785bef995cc2193df948718892e3200d4408e3ee79b34aead7a9ccec4af042b6214a98f480444b7
6
+ metadata.gz: 2132180bb938d0db3a8dfe094a45b173254b52ec6847977480ae14a9ceec8a2c44da0dd54bfc7c4f062a2e050710ac5cdf3137b46a238993c40b148df631032f
7
+ data.tar.gz: cb45e29c4f0d6d3874352a89f29146cc154279430a58535fe3e9ff6d46e53900171534a29209e5432f203073fe1708f578181d800f595d07844be52eda8d15f4
data/CHANGELOG.md CHANGED
@@ -1,3 +1,32 @@
1
+ # 14.0.0
2
+
3
+ * Remove handling of non-200 responses (#245)
4
+
5
+ # 13.4.0
6
+
7
+ * Revert X-Slimmer-Ignore-Error header (#246)
8
+
9
+ # 13.3.0
10
+
11
+ * Add X-Slimmer-Ignore-Error header flag to prevent overriding non-200 status responses
12
+
13
+ # 13.2.2
14
+
15
+ * Fix bug where parent_name was called without app
16
+
17
+ # 13.2.1
18
+
19
+ * Fix deprecation warning: `Module#parent_name` has been renamed to
20
+ `module_parent_name`. `parent_name` is deprecated and will be removed in
21
+ Rails 6.1. (#237)
22
+ * Migrate from govuk-lint to rubocop-govuk (#237)
23
+ * Remove lint rake task (#237)
24
+ * Fix linting issues (#237)
25
+ * Fix deprecation warning: Mocha deprecation warning at
26
+ /my/local/path/to/test/test_helper.rb:6:in 'require': Require
27
+ 'mocha/test_unit', 'mocha/minitest' or 'mocha/api' instead of 'mocha/setup'.
28
+ (#237)
29
+
1
30
  # 13.2.0
2
31
 
3
32
  * Upgrade Ruby version to 2.6.5. (#234)
data/Rakefile CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  require "bundler/gem_tasks"
4
4
  require "rdoc/task"
5
- require 'rake/testtask'
5
+ require "rake/testtask"
6
6
 
7
- Dir.glob('lib/tasks/*.rake').each { |r| import r }
7
+ Dir.glob("lib/tasks/*.rake").each { |r| import r }
8
8
 
9
9
  RDoc::Task.new do |rd|
10
10
  rd.rdoc_files.include("lib/**/*.rb")
@@ -18,4 +18,4 @@ Rake::TestTask.new("test") do |t|
18
18
  t.verbose = true
19
19
  end
20
20
 
21
- task :default => [:test, :lint]
21
+ task default: %i[test]
@@ -1,26 +1,25 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
- require 'optparse'
4
- require 'slimmer'
5
- require 'logger'
3
+ require "optparse"
4
+ require "slimmer"
5
+ require "logger"
6
6
 
7
7
  options = {}
8
- OptionParser.new do |opts|
9
- opts.on '-t', '--template=TEMPLATE',
10
- 'Template to render' do |v|
8
+ option_parser = OptionParser.new do |opts|
9
+ opts.on "-t", "--template=TEMPLATE", "Template to render" do |v|
11
10
  options[:template] = v
12
11
  end
13
12
 
14
- opts.on '-h', '--asset-host=HOST',
15
- 'Host that serves assets used in the template' do |v|
13
+ opts.on "-h", "--asset-host=HOST", "Host that serves assets used in the template" do |v|
16
14
  options[:asset_host] = v
17
15
  end
18
16
 
19
- opts.on '-o', '--output-file=FILE',
20
- 'File to write static error page to' do |v|
17
+ opts.on "-o", "--output-file=FILE", "File to write static error page to" do |v|
21
18
  options[:file] = v
22
19
  end
23
- end.parse!
20
+ end
21
+
22
+ option_parser.parse!
24
23
 
25
24
  raise "Please specify a template" unless options[:template]
26
25
  raise "Please specify an asset host" unless options[:asset_host]
@@ -28,13 +27,13 @@ raise "Please specify an output file" unless options[:file]
28
27
 
29
28
  logger = Logger.new STDOUT
30
29
  logger.level = Logger::DEBUG
31
- skin = Slimmer::Skin.new options[:asset_host], false, :logger => logger
30
+ skin = Slimmer::Skin.new options[:asset_host], false, logger: logger
32
31
  static_error = skin.error nil, options[:template], Nokogiri::HTML("").to_html
33
32
 
34
- if options[:file] == '-'
33
+ if options[:file] == "-"
35
34
  STDOUT.print static_error
36
35
  else
37
- File.open options[:file], 'w' do |f|
36
+ File.open options[:file], "w" do |f|
38
37
  f.print static_error
39
38
  end
40
39
  end
data/lib/slimmer.rb CHANGED
@@ -1,10 +1,10 @@
1
- require 'nokogiri'
2
- require 'erb'
3
- require 'plek'
4
- require 'null_logger'
1
+ require "nokogiri"
2
+ require "erb"
3
+ require "plek"
4
+ require "null_logger"
5
5
 
6
- require 'slimmer/version'
7
- require 'slimmer/railtie' if defined? Rails
6
+ require "slimmer/version"
7
+ require "slimmer/railtie" if defined? Rails
8
8
 
9
9
  module Slimmer
10
10
  CACHE_TTL = 60
@@ -19,29 +19,29 @@ module Slimmer
19
19
  end
20
20
  end
21
21
 
22
- autoload :Railtie, 'slimmer/railtie'
23
- autoload :Skin, 'slimmer/skin'
22
+ autoload :Railtie, "slimmer/railtie"
23
+ autoload :Skin, "slimmer/skin"
24
24
 
25
- autoload :Template, 'slimmer/template'
26
- autoload :App, 'slimmer/app'
27
- autoload :Headers, 'slimmer/headers'
28
- autoload :HTTPClient, 'slimmer/http_client'
25
+ autoload :Template, "slimmer/template"
26
+ autoload :App, "slimmer/app"
27
+ autoload :Headers, "slimmer/headers"
28
+ autoload :HTTPClient, "slimmer/http_client"
29
29
 
30
30
  module Processors
31
- autoload :BodyClassCopier, 'slimmer/processors/body_class_copier'
32
- autoload :BodyInserter, 'slimmer/processors/body_inserter'
33
- autoload :ConditionalCommentMover, 'slimmer/processors/conditional_comment_mover'
34
- autoload :FooterRemover, 'slimmer/processors/footer_remover'
35
- autoload :MetadataInserter, 'slimmer/processors/metadata_inserter'
36
- autoload :HeaderContextInserter, 'slimmer/processors/header_context_inserter'
37
- autoload :InsideHeaderInserter, 'slimmer/processors/inside_header_inserter'
38
- autoload :NavigationMover, 'slimmer/processors/navigation_mover'
39
- autoload :SearchIndexSetter, 'slimmer/processors/search_index_setter'
40
- autoload :SearchPathSetter, 'slimmer/processors/search_path_setter'
41
- autoload :SearchParameterInserter, 'slimmer/processors/search_parameter_inserter'
42
- autoload :SearchRemover, 'slimmer/processors/search_remover'
43
- autoload :TagMover, 'slimmer/processors/tag_mover'
44
- autoload :TitleInserter, 'slimmer/processors/title_inserter'
31
+ autoload :BodyClassCopier, "slimmer/processors/body_class_copier"
32
+ autoload :BodyInserter, "slimmer/processors/body_inserter"
33
+ autoload :ConditionalCommentMover, "slimmer/processors/conditional_comment_mover"
34
+ autoload :FooterRemover, "slimmer/processors/footer_remover"
35
+ autoload :MetadataInserter, "slimmer/processors/metadata_inserter"
36
+ autoload :HeaderContextInserter, "slimmer/processors/header_context_inserter"
37
+ autoload :InsideHeaderInserter, "slimmer/processors/inside_header_inserter"
38
+ autoload :NavigationMover, "slimmer/processors/navigation_mover"
39
+ autoload :SearchIndexSetter, "slimmer/processors/search_index_setter"
40
+ autoload :SearchPathSetter, "slimmer/processors/search_path_setter"
41
+ autoload :SearchParameterInserter, "slimmer/processors/search_parameter_inserter"
42
+ autoload :SearchRemover, "slimmer/processors/search_remover"
43
+ autoload :TagMover, "slimmer/processors/tag_mover"
44
+ autoload :TitleInserter, "slimmer/processors/title_inserter"
45
45
  end
46
46
 
47
47
  class TemplateNotFoundException < StandardError; end
data/lib/slimmer/app.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'slimmer/govuk_request_id'
1
+ require "slimmer/govuk_request_id"
2
2
 
3
3
  module Slimmer
4
4
  class App
@@ -10,15 +10,11 @@ module Slimmer
10
10
 
11
11
  logger = options[:logger] || NullLogger.instance
12
12
  self.logger = logger
13
- begin
14
- if logger.level.zero? # Log set to debug level
15
- unless options[:enable_debugging]
16
- self.logger = logger.dup
17
- self.logger.level = 1 # info
18
- end
13
+ if logger&.level&.zero? # Log set to debug level
14
+ unless options[:enable_debugging]
15
+ self.logger = logger.dup
16
+ self.logger.level = 1 # info
19
17
  end
20
- rescue NoMethodError # rubocop:disable Lint/HandleExceptions
21
- # In case logger doesn't respond_to? :level
22
18
  end
23
19
 
24
20
  if options.key? :template_path
@@ -56,11 +52,11 @@ module Slimmer
56
52
  end
57
53
 
58
54
  def in_development?
59
- ENV['RAILS_ENV'] == 'development'
55
+ ENV["RAILS_ENV"] == "development"
60
56
  end
61
57
 
62
58
  def skip_slimmer_param?(env)
63
- skip = Rack::Request.new(env).params['skip_slimmer']
59
+ skip = Rack::Request.new(env).params["skip_slimmer"]
64
60
  skip && skip.to_i.positive?
65
61
  end
66
62
 
@@ -84,26 +80,16 @@ module Slimmer
84
80
 
85
81
  def rewrite_response(env, response)
86
82
  request = Rack::Request.new(env)
83
+ return response.finish unless response.status == 200
87
84
 
88
85
  # Store the request id so it can be passed on with any template requests
89
- GovukRequestId.value = env['HTTP_GOVUK_REQUEST_ID']
90
-
91
- rewritten_body = case response.status
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
86
+ GovukRequestId.value = env["HTTP_GOVUK_REQUEST_ID"]
103
87
 
88
+ rewritten_body = @skin.success request, response, s(response.body)
104
89
  rewritten_body = [rewritten_body] unless rewritten_body.respond_to?(:each)
90
+
105
91
  response.body = rewritten_body
106
- response.headers['Content-Length'] = content_length(response.body)
92
+ response.headers["Content-Length"] = content_length(response.body)
107
93
 
108
94
  response.finish
109
95
  end
@@ -1,3 +1,3 @@
1
- require 'cucumber'
1
+ require "cucumber"
2
2
 
3
- require 'slimmer/test'
3
+ require "slimmer/test"
@@ -2,11 +2,11 @@ module Slimmer::Processors
2
2
  class BodyClassCopier
3
3
  def filter(src, dest)
4
4
  src_body_tag = src.at_css("body")
5
- dest_body_tag = dest.at_css('body')
5
+ dest_body_tag = dest.at_css("body")
6
6
  if src_body_tag.has_attribute?("class")
7
- combinded_classes = dest_body_tag.attr('class').to_s.split(/ +/)
8
- combinded_classes << src_body_tag.attr('class').to_s.split(/ +/)
9
- dest_body_tag.set_attribute("class", combinded_classes.join(' '))
7
+ combinded_classes = dest_body_tag.attr("class").to_s.split(/ +/)
8
+ combinded_classes << src_body_tag.attr("class").to_s.split(/ +/)
9
+ dest_body_tag.set_attribute("class", combinded_classes.join(" "))
10
10
  end
11
11
  end
12
12
  end
@@ -1,8 +1,8 @@
1
1
  module Slimmer::Processors
2
2
  class BodyInserter
3
- def initialize(source_id = 'wrapper', destination_id = 'wrapper')
4
- @source_selector = '#' + source_id
5
- @destination_selector = '#' + destination_id
3
+ def initialize(source_id = "wrapper", destination_id = "wrapper")
4
+ @source_selector = "#" + source_id
5
+ @destination_selector = "#" + destination_id
6
6
  end
7
7
 
8
8
  def filter(src, dest)
@@ -1,9 +1,9 @@
1
1
  module Slimmer::Processors
2
2
  class ConditionalCommentMover
3
3
  def filter(src, dest)
4
- src.xpath('//comment()').each do |comment|
4
+ src.xpath("//comment()").each do |comment|
5
5
  if match_conditional_comments(comment)
6
- dest.at_xpath('/html/head') << comment
6
+ dest.at_xpath("/html/head") << comment
7
7
  end
8
8
  end
9
9
  end
@@ -1,6 +1,6 @@
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
 
@@ -1,10 +1,10 @@
1
1
  module Slimmer::Processors
2
2
  class InsideHeaderInserter
3
3
  def filter(src, dest)
4
- insertion = src.at_css('.slimmer-inside-header')
4
+ insertion = src.at_css(".slimmer-inside-header")
5
5
 
6
6
  if insertion
7
- logo = dest.at_css('.header-logo')
7
+ logo = dest.at_css(".header-logo")
8
8
  logo.add_next_sibling(insertion.inner_html) unless logo.nil?
9
9
  end
10
10
  end
@@ -6,22 +6,22 @@ module Slimmer::Processors
6
6
  end
7
7
 
8
8
  def filter(_src, dest)
9
- head = dest.at_css('head')
9
+ head = dest.at_css("head")
10
10
 
11
- add_meta_tag('analytics:organisations', @headers[Slimmer::Headers::ORGANISATIONS_HEADER], head)
12
- add_meta_tag('analytics:world-locations', @headers[Slimmer::Headers::WORLD_LOCATIONS_HEADER], head)
13
- add_meta_tag('format', @headers[Slimmer::Headers::FORMAT_HEADER], head)
14
- add_meta_tag('search-result-count', @headers[Slimmer::Headers::RESULT_COUNT_HEADER], head)
15
- add_meta_tag('rendering-application', @app_name, head)
11
+ add_meta_tag("analytics:organisations", @headers[Slimmer::Headers::ORGANISATIONS_HEADER], head)
12
+ add_meta_tag("analytics:world-locations", @headers[Slimmer::Headers::WORLD_LOCATIONS_HEADER], head)
13
+ add_meta_tag("format", @headers[Slimmer::Headers::FORMAT_HEADER], head)
14
+ add_meta_tag("search-result-count", @headers[Slimmer::Headers::RESULT_COUNT_HEADER], head)
15
+ add_meta_tag("rendering-application", @app_name, head)
16
16
  end
17
17
 
18
18
  private
19
19
 
20
20
  def add_meta_tag(name, content, head)
21
21
  if content
22
- meta_node = Nokogiri::XML::Node.new('meta', head)
23
- meta_node['name'] = "govuk:#{name}"
24
- meta_node['content'] = content
22
+ meta_node = Nokogiri::XML::Node.new("meta", head)
23
+ meta_node["name"] = "govuk:#{name}"
24
+ meta_node["content"] = content
25
25
 
26
26
  head.add_child(meta_node)
27
27
  end
@@ -9,16 +9,16 @@ class Slimmer::Processors::NavigationMover
9
9
  if proposition_header && global_header
10
10
  proposition_header.remove
11
11
 
12
- global_header['class'] = [global_header['class'], 'with-proposition'].compact.join(' ')
12
+ global_header["class"] = [global_header["class"], "with-proposition"].compact.join(" ")
13
13
 
14
14
  header_block = Nokogiri::HTML.fragment(proposition_header_block)
15
- header_block.at_css('.content') << proposition_header
15
+ header_block.at_css(".content") << proposition_header
16
16
 
17
- global_header.at_css('.header-wrapper') << header_block
17
+ global_header.at_css(".header-wrapper") << header_block
18
18
  end
19
19
  end
20
20
 
21
21
  def proposition_header_block
22
- @proposition_header_block ||= @skin.template('proposition_menu')
22
+ @proposition_header_block ||= @skin.template("proposition_menu")
23
23
  end
24
24
  end
@@ -1,4 +1,4 @@
1
- require 'json'
1
+ require "json"
2
2
 
3
3
  module Slimmer::Processors
4
4
  class SearchParameterInserter
@@ -7,7 +7,7 @@ module Slimmer::Processors
7
7
  end
8
8
 
9
9
  def filter(_content_document, page_template)
10
- search_form = page_template.at_css('form#search')
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|
13
13
  # Value can either be a string or an array of values
@@ -24,10 +24,10 @@ module Slimmer::Processors
24
24
  end
25
25
 
26
26
  def add_hidden_input(search_form, name, value)
27
- element = Nokogiri::XML::Node.new('input', search_form)
28
- element['type'] = 'hidden'
29
- element['name'] = name
30
- element['value'] = value.to_s
27
+ element = Nokogiri::XML::Node.new("input", search_form)
28
+ element["type"] = "hidden"
29
+ element["name"] = name
30
+ element["value"] = value.to_s
31
31
  search_form.add_child(element)
32
32
  end
33
33
 
@@ -5,8 +5,8 @@ module Slimmer::Processors
5
5
  end
6
6
 
7
7
  def filter(_content_document, page_template)
8
- if search_scope && page_template.at_css('form#search')
9
- page_template.at_css('form#search').attributes["action"].value = search_scope
8
+ if search_scope && page_template.at_css("form#search")
9
+ page_template.at_css("form#search").attributes["action"].value = search_scope
10
10
  end
11
11
  end
12
12
 
@@ -1,10 +1,10 @@
1
1
  module Slimmer::Processors
2
2
  class TagMover
3
3
  def filter(src, dest)
4
- move_tags(src, dest, 'script', dest_node: 'body', keys: %w(src inner_html))
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
- move_tags(src, dest, 'meta', must_have: %w(property content), keys: %w(property content), insertion_location: :top)
4
+ move_tags(src, dest, "script", dest_node: "body", keys: %w(src inner_html))
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
+ move_tags(src, dest, "meta", must_have: %w(property content), keys: %w(property content), insertion_location: :top)
8
8
  end
9
9
 
10
10
  def include_tag?(node, min_attrs)
@@ -13,7 +13,7 @@ module Slimmer::Processors
13
13
 
14
14
  def tag_fingerprint(node, attrs)
15
15
  collected_attrs = attrs.collect do |attr_name|
16
- if attr_name == 'inner_html'
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
@@ -24,7 +24,7 @@ module Slimmer::Processors
24
24
  end
25
25
 
26
26
  def wrap_node(src, node)
27
- if node.previous_sibling.to_s =~ /<!--\[if[^\]]+\]><!-->/ && node.next_sibling.to_s == '<!--<![endif]-->'
27
+ if node.previous_sibling.to_s =~ /<!--\[if[^\]]+\]><!-->/ && node.next_sibling.to_s == "<!--<![endif]-->"
28
28
  node = Nokogiri::XML::NodeSet.new(src, [node.previous_sibling, node, node.next_sibling])
29
29
  end
30
30
  node
@@ -36,7 +36,7 @@ module Slimmer::Processors
36
36
  already_there = dest.css(type).map { |node|
37
37
  tag_fingerprint(node, comparison_attrs)
38
38
  }.compact
39
- dest_node = opts[:dest_node] || 'head'
39
+ dest_node = opts[:dest_node] || "head"
40
40
 
41
41
  src.css(type).each do |node|
42
42
  if include_tag?(node, min_attrs) && !already_there.include?(tag_fingerprint(node, comparison_attrs))
@@ -1,18 +1,18 @@
1
1
  module Slimmer::Processors
2
2
  class TitleInserter
3
3
  def filter(src, dest)
4
- title = src.at_css('head title')
5
- head = dest.at_xpath('/html/head')
4
+ title = src.at_css("head title")
5
+ head = dest.at_xpath("/html/head")
6
6
  if head && title
7
7
  insert_title(title, head)
8
8
  end
9
9
  end
10
10
 
11
11
  def insert_title(title, head)
12
- if head.at_css('title').nil?
12
+ if head.at_css("title").nil?
13
13
  head.first_element_child.nil? ? head << title : head.first_element_child.before(title)
14
14
  else
15
- head.at_css('title').replace(title)
15
+ head.at_css("title").replace(title)
16
16
  end
17
17
  end
18
18
  end
@@ -4,11 +4,20 @@ module Slimmer
4
4
 
5
5
  initializer "slimmer.configure" do |app|
6
6
  slimmer_config = app.config.slimmer.to_hash
7
-
8
- app_name = ENV['GOVUK_APP_NAME'] || app.class.parent_name
7
+ app_name = ENV["GOVUK_APP_NAME"] || Slimmer::Railtie.parent_name(app)
9
8
  slimmer_config = slimmer_config.reverse_merge(app_name: app_name)
10
9
 
11
10
  app.middleware.use Slimmer::App, slimmer_config
12
11
  end
12
+
13
+ # TODO: remove this method when all our apps are in rails 6 and substitute
14
+ # it with: app_name = ENV['GOVUK_APP_NAME'] || app.class.module_parent_name
15
+ def self.parent_name(app)
16
+ if app.class.respond_to?(:module_parent_name)
17
+ app.class.module_parent_name
18
+ else
19
+ app.class.parent_name
20
+ end
21
+ end
13
22
  end
14
23
  end
data/lib/slimmer/rspec.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'rspec/core'
1
+ require "rspec/core"
2
2
 
3
- require 'slimmer'
4
- require 'slimmer/test'
3
+ require "slimmer"
4
+ require "slimmer/test"
data/lib/slimmer/skin.rb CHANGED
@@ -1,5 +1,5 @@
1
- require 'rest_client'
2
- require 'slimmer/govuk_request_id'
1
+ require "rest_client"
2
+ require "slimmer/govuk_request_id"
3
3
 
4
4
  module Slimmer
5
5
  class Skin
@@ -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)
@@ -30,7 +30,7 @@ module Slimmer
30
30
 
31
31
  def template_url(template_name)
32
32
  host = asset_host.dup
33
- host += '/' unless host =~ /\/$/
33
+ host += "/" unless host =~ /\/$/
34
34
  "#{host}templates/#{template_name}.html.erb"
35
35
  end
36
36
 
@@ -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] } # rubocop:disable Style/FormatStringToken
62
+ context = (from..to).zip(lines[from..to]).map { |lineno, line| "%4d: %s" % [lineno, line] }
63
63
  marker = " " * (error.column - 1) + "-----v"
64
64
  context.insert(context_size, marker)
65
65
  context.join("\n")
@@ -92,7 +92,7 @@ module Slimmer
92
92
  end
93
93
 
94
94
  def success(source_request, response, body)
95
- wrapper_id = options[:wrapper_id] || 'wrapper'
95
+ wrapper_id = options[:wrapper_id] || "wrapper"
96
96
 
97
97
  processors = [
98
98
  Processors::TitleInserter.new,
@@ -109,15 +109,8 @@ module Slimmer
109
109
  Processors::SearchRemover.new(response.headers),
110
110
  ]
111
111
 
112
- template_name = response.headers[Headers::TEMPLATE_HEADER] || 'core_layout'
112
+ template_name = response.headers[Headers::TEMPLATE_HEADER] || "core_layout"
113
113
  process(processors, body, template(template_name), source_request.env)
114
114
  end
115
-
116
- def error(template_name, body, rack_env)
117
- processors = [
118
- Processors::TitleInserter.new
119
- ]
120
- process(processors, body, template(template_name), rack_env)
121
- end
122
115
  end
123
116
  end
data/lib/slimmer/test.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'slimmer/skin'
1
+ require "slimmer/skin"
2
2
 
3
3
  module Slimmer
4
4
  class Skin
@@ -6,10 +6,10 @@ module Slimmer
6
6
  logger.debug "Slimmer: TEST MODE - Loading fixture template from #{__FILE__}"
7
7
  if name =~ /\A(.*)\.raw\z/
8
8
  %{<div id="test-#{$1}"></div>}
9
- elsif File.exist?(template_path = File.join(File.dirname(__FILE__), 'test_templates', "#{name}.html"))
9
+ elsif File.exist?(template_path = File.join(File.dirname(__FILE__), "test_templates", "#{name}.html"))
10
10
  File.read(template_path)
11
11
  else
12
- File.read(File.join(File.dirname(__FILE__), 'test_templates', "wrapper.html"))
12
+ File.read(File.join(File.dirname(__FILE__), "test_templates", "wrapper.html"))
13
13
  end
14
14
  end
15
15
  end
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '13.2.0'.freeze
2
+ VERSION = "14.0.0".freeze
3
3
  end
@@ -1,4 +1,4 @@
1
- require 'rake'
1
+ require "rake"
2
2
 
3
3
  namespace :slimmer do
4
4
  desc "Symlink from public directory to static directory"
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slimmer
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.2.0
4
+ version: 14.0.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-10-21 00:00:00.000000000 Z
11
+ date: 2020-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: nokogiri
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rack
28
+ name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,21 +39,21 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: plek
42
+ name: nokogiri
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.1.0
47
+ version: '1.7'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.1.0
54
+ version: '1.7'
55
55
  - !ruby/object:Gem::Dependency
56
- name: json
56
+ name: null_logger
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,21 +67,21 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: null_logger
70
+ name: plek
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 1.1.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '0'
82
+ version: 1.1.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: rest-client
84
+ name: rack
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: activesupport
98
+ name: rest-client
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,89 +109,89 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: yard
112
+ name: minitest
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '='
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.8.7.6
117
+ version: '5.4'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '='
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.8.7.6
124
+ version: '5.4'
125
125
  - !ruby/object:Gem::Dependency
126
- name: minitest
126
+ name: mocha
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '5.4'
131
+ version: '1.1'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '5.4'
138
+ version: '1.1'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rake
140
+ name: rack-test
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 0.9.2.2
145
+ version: 0.6.1
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 0.9.2.2
152
+ version: 0.6.1
153
153
  - !ruby/object:Gem::Dependency
154
- name: rack-test
154
+ name: rails
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 0.6.1
159
+ version: 6.0.2
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 0.6.1
166
+ version: 6.0.2
167
167
  - !ruby/object:Gem::Dependency
168
- name: mocha
168
+ name: rake
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '1.1'
173
+ version: 0.9.2.2
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '1.1'
180
+ version: 0.9.2.2
181
181
  - !ruby/object:Gem::Dependency
182
- name: webmock
182
+ name: rubocop-govuk
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - '='
185
+ - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 3.5.0
187
+ version: 2.0.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.5.0
194
+ version: 2.0.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: timecop
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -207,19 +207,33 @@ dependencies:
207
207
  - !ruby/object:Gem::Version
208
208
  version: 0.5.1
209
209
  - !ruby/object:Gem::Dependency
210
- name: govuk-lint
210
+ name: webmock
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
- - - "~>"
213
+ - - '='
214
214
  - !ruby/object:Gem::Version
215
- version: 3.11.5
215
+ version: 3.5.0
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.11.5
222
+ version: 3.5.0
223
+ - !ruby/object:Gem::Dependency
224
+ name: yard
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - '='
228
+ - !ruby/object:Gem::Version
229
+ version: 0.8.7.6
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - '='
235
+ - !ruby/object:Gem::Version
236
+ version: 0.8.7.6
223
237
  description: Rack middleware for skinning pages using a specific template
224
238
  email:
225
239
  - govuk-dev@digital.cabinet-office.gov.uk
@@ -260,7 +274,6 @@ files:
260
274
  - lib/slimmer/test_templates/proposition_menu.html
261
275
  - lib/slimmer/test_templates/wrapper.html
262
276
  - lib/slimmer/version.rb
263
- - lib/tasks/lint.rake
264
277
  - lib/tasks/slimmer.rake
265
278
  homepage: http://github.com/alphagov/slimmer
266
279
  licenses:
data/lib/tasks/lint.rake DELETED
@@ -1,4 +0,0 @@
1
- desc "Run govuk-lint with similar params to CI"
2
- task :lint do
3
- sh "bundle exec govuk-lint-ruby --diff --cached --format clang bin lib test"
4
- end