slimmer 13.2.0 → 14.0.0

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