slimmer 1.2.5 → 2.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.
Files changed (37) hide show
  1. data/CHANGELOG.md +14 -1
  2. data/lib/slimmer.rb +28 -17
  3. data/lib/slimmer/app.rb +9 -9
  4. data/lib/slimmer/headers.rb +32 -1
  5. data/lib/slimmer/{admin_title_inserter.rb → processors/admin_title_inserter.rb} +1 -1
  6. data/lib/slimmer/{body_class_copier.rb → processors/body_class_copier.rb} +1 -1
  7. data/lib/slimmer/{body_inserter.rb → processors/body_inserter.rb} +1 -1
  8. data/lib/slimmer/{conditional_comment_mover.rb → processors/conditional_comment_mover.rb} +1 -1
  9. data/lib/slimmer/{footer_remover.rb → processors/footer_remover.rb} +1 -1
  10. data/lib/slimmer/{google_analytics_configurator.rb → processors/google_analytics_configurator.rb} +3 -2
  11. data/lib/slimmer/{header_context_inserter.rb → processors/header_context_inserter.rb} +1 -1
  12. data/lib/slimmer/processors/logo_class_inserter.rb +20 -0
  13. data/lib/slimmer/processors/related_items_inserter.rb +20 -0
  14. data/lib/slimmer/{search_path_setter.rb → processors/search_path_setter.rb} +2 -4
  15. data/lib/slimmer/{section_inserter.rb → processors/section_inserter.rb} +1 -1
  16. data/lib/slimmer/{tag_mover.rb → processors/tag_mover.rb} +1 -1
  17. data/lib/slimmer/{title_inserter.rb → processors/title_inserter.rb} +1 -1
  18. data/lib/slimmer/skin.rb +28 -20
  19. data/lib/slimmer/template.rb +1 -1
  20. data/lib/slimmer/test.rb +5 -1
  21. data/lib/slimmer/test_template.rb +7 -1
  22. data/lib/slimmer/version.rb +1 -1
  23. data/test/fixtures/related.raw.html.erb +26 -22
  24. data/test/fixtures/wrapper.html.erb +2 -0
  25. data/test/headers_test.rb +56 -1
  26. data/test/processors/body_inserter_test.rb +4 -4
  27. data/test/{google_analytics_test.rb → processors/google_analytics_test.rb} +31 -0
  28. data/test/processors/header_context_inserter_test.rb +5 -5
  29. data/test/processors/logo_class_inserter_test.rb +55 -0
  30. data/test/processors/related_items_inserter_test.rb +61 -0
  31. data/test/{search_path_setter_test.rb → processors/search_path_setter_test.rb} +0 -0
  32. data/test/processors/section_inserter_test.rb +20 -5
  33. data/test/test_helper.rb +31 -22
  34. data/test/typical_usage_test.rb +101 -70
  35. metadata +60 -70
  36. data/lib/slimmer/related_items_inserter.rb +0 -36
  37. data/lib/slimmer/url_rewriter.rb +0 -40
@@ -1,36 +0,0 @@
1
- require 'gds_api/helpers'
2
-
3
- class Slimmer::RelatedItemsInserter
4
- include GdsApi::Helpers
5
- include ERB::Util
6
-
7
- def initialize(related_block_template, external_request)
8
- @related_block_template = related_block_template
9
- @external_request = external_request
10
- end
11
-
12
- def requested_slug
13
- url_parts = @external_request.path_info.split('/')
14
- url_parts.size > 0 ? url_parts[1] : ''
15
- end
16
-
17
- def filter(content_document, page_template)
18
- if content_document.at_css('body.mainstream div#related-items')
19
- page_template.at_css('body.mainstream div#related-items').replace(related_item_block)
20
- end
21
- end
22
-
23
- def under_test?
24
- ENV['RACK_ENV'] == 'test' || ENV['RAILS_ENV'] == 'test'
25
- end
26
-
27
- def metadata_from_panopticon
28
- under_test? ? {} : fetch_artefact(slug: requested_slug)
29
- end
30
-
31
- def related_item_block
32
- artefact = metadata_from_panopticon
33
- html = ERB.new(@related_block_template).result(binding)
34
- Nokogiri::HTML.fragment(html)
35
- end
36
- end
@@ -1,40 +0,0 @@
1
- module Slimmer
2
- class UrlRewriter
3
- def initialize(request)
4
- @request = request
5
- end
6
-
7
- def filter(src,dest)
8
- rewrite_document src
9
- end
10
-
11
- def rewrite_document(doc)
12
- rewrite_nodes doc.css('body img'),'src'
13
- rewrite_nodes doc.css('script'),'src'
14
- rewrite_nodes doc.css('link'),'href'
15
- end
16
-
17
- def rewrite_nodes(nodes,attr)
18
- nodes.each do |node|
19
- next unless node.attr(attr)
20
- node_uri = URI.parse(node.attr(attr))
21
- node.attribute(attr).value = rewrite_url(node_uri).to_s
22
- end
23
- end
24
-
25
- def rewrite_url(uri)
26
- unless uri.absolute?
27
- uri.scheme = @request.scheme
28
- if @request.host =~ /:/
29
- host,port = @request.host.split(":")
30
- uri.host = host
31
- uri.port = port
32
- else
33
- uri.host = @request.host
34
- uri.port = @request.port
35
- end
36
- end
37
- uri
38
- end
39
- end
40
- end