slimmer 1.1.47 → 1.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.
@@ -16,6 +16,13 @@ module Slimmer
16
16
  end.compact.sort
17
17
  end
18
18
 
19
+ def wrap_node(src, node)
20
+ if node.previous_sibling.to_s =~ /<!--\[if[^\]]+\]>-->/ and node.next_sibling.to_s == '<!--<![endif]-->'
21
+ node = Nokogiri::XML::NodeSet.new(src, [node.previous_sibling, node, node.next_sibling])
22
+ end
23
+ node
24
+ end
25
+
19
26
  def move_tags(src, dest, type, opts)
20
27
  comparison_attrs = opts[:keys] || opts[:must_have]
21
28
  min_attrs = opts[:must_have]
@@ -25,6 +32,7 @@ module Slimmer
25
32
 
26
33
  src.css(type).each do |node|
27
34
  if include_tag?(node, min_attrs) && !already_there.include?(tag_fingerprint(node, comparison_attrs))
35
+ node = wrap_node(src, node)
28
36
  node.remove
29
37
  dest.at_xpath('/html/head') << node
30
38
  end
@@ -1,3 +1,3 @@
1
1
  module Slimmer
2
- VERSION = '1.1.47'
2
+ VERSION = '1.2.0'
3
3
  end
@@ -78,7 +78,6 @@ module TypicalUsage
78
78
  <meta name="x-section-name" content="This section">
79
79
  <meta name="x-section-link" content="/this_section">
80
80
  <script src="blah.js"></script>
81
- <!--[if lt IE 9]><link href="app-ie.css" rel="stylesheet" type="text/css"><![endif]-->
82
81
  <link href="app.css" rel="stylesheet" type="text/css">
83
82
  </head>
84
83
  <body class="body_class">
@@ -107,11 +106,6 @@ module TypicalUsage
107
106
  assert_rendered_in_template "head link[href='app.css']"
108
107
  end
109
108
 
110
- def test_should_move_conditional_comments_into_the_head
111
- element = Nokogiri::HTML.parse(last_response.body).at_xpath('//comment()')
112
- assert_match /app-ie\.css/, element.to_s, 'Not found conditional comment in output'
113
- end
114
-
115
109
  def test_should_copy_the_class_of_the_body_element
116
110
  assert_rendered_in_template "body.body_class"
117
111
  end
@@ -122,6 +116,35 @@ module TypicalUsage
122
116
 
123
117
  end
124
118
 
119
+ class ConditionalCommentTest < SlimmerIntegrationTest
120
+ given_response 200, %{
121
+ <html>
122
+ <head><title>The title of the page</title>
123
+ <!--[if lt IE 9]><link href="app-ie.css" rel="stylesheet" type="text/css"><![endif]-->
124
+ </head>
125
+ </html>
126
+ }
127
+ def test_should_find_conditional_comments_copied_into_the_head
128
+ element = Nokogiri::HTML.parse(last_response.body).at_xpath('//comment()')
129
+ assert_match element.to_s, /app-ie\.css/, 'Not found conditional comment in output'
130
+ end
131
+ end
132
+
133
+ class WrapTagTest < SlimmerIntegrationTest
134
+ given_response 200, %{
135
+ <html>
136
+ <head>
137
+ <!--[if gt IE 8]>--><link href="app.css" rel="stylesheet" type="text/css"><!--<![endif]-->
138
+ </head>
139
+ </html>
140
+ }
141
+ def test_should_find_stylesheet_wrapped_with_conditional_comments
142
+ assert_rendered_in_template "head link[href='app.css']"
143
+ element = Nokogiri::HTML.parse(last_response.body).at_xpath('/html/head')
144
+ assert_match element.to_s, /<!--\[if gt IE 8\]>-->.*app\.css.*<!--<!\[endif\]-->/m, 'Not found conditional comment in output'
145
+ end
146
+ end
147
+
125
148
  class ResponseWithRelatedItemsTest < SlimmerIntegrationTest
126
149
  include GdsApi::TestHelpers::Panopticon
127
150
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: slimmer
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.1.47
5
+ version: 1.2.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-07-27 00:00:00 Z
14
+ date: 2012-08-02 00:00:00 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: nokogiri
@@ -161,41 +161,41 @@ extra_rdoc_files: []
161
161
  files:
162
162
  - README.md
163
163
  - CHANGELOG.md
164
- - lib/slimmer/template.rb
164
+ - lib/tasks/slimmer.rake
165
+ - lib/slimmer/body_class_copier.rb
166
+ - lib/slimmer/version.rb
167
+ - lib/slimmer/google_analytics_configurator.rb
165
168
  - lib/slimmer/related_items_inserter.rb
166
- - lib/slimmer/header_context_inserter.rb
169
+ - lib/slimmer/body_inserter.rb
170
+ - lib/slimmer/template.rb
171
+ - lib/slimmer/footer_remover.rb
167
172
  - lib/slimmer/railtie.rb
168
173
  - lib/slimmer/test.rb
169
- - lib/slimmer/footer_remover.rb
170
174
  - lib/slimmer/skin.rb
171
175
  - lib/slimmer/conditional_comment_mover.rb
176
+ - lib/slimmer/url_rewriter.rb
177
+ - lib/slimmer/app.rb
178
+ - lib/slimmer/admin_title_inserter.rb
172
179
  - lib/slimmer/section_inserter.rb
173
- - lib/slimmer/title_inserter.rb
174
180
  - lib/slimmer/search_path_setter.rb
175
- - lib/slimmer/url_rewriter.rb
176
- - lib/slimmer/body_class_copier.rb
177
181
  - lib/slimmer/headers.rb
178
- - lib/slimmer/version.rb
179
- - lib/slimmer/google_analytics_configurator.rb
180
- - lib/slimmer/admin_title_inserter.rb
181
182
  - lib/slimmer/tag_mover.rb
182
- - lib/slimmer/body_inserter.rb
183
- - lib/slimmer/app.rb
183
+ - lib/slimmer/title_inserter.rb
184
+ - lib/slimmer/header_context_inserter.rb
184
185
  - lib/slimmer.rb
185
- - lib/tasks/slimmer.rake
186
186
  - Rakefile
187
- - test/typical_usage_test.rb
188
- - test/test_helper.rb
189
- - test/headers_test.rb
190
187
  - test/processors/header_context_inserter_test.rb
191
188
  - test/processors/body_inserter_test.rb
189
+ - test/skin_test.rb
190
+ - test/headers_test.rb
191
+ - test/google_analytics_test.rb
192
+ - test/typical_usage_test.rb
192
193
  - test/fixtures/500.html.erb
193
- - test/fixtures/related.raw.html.erb
194
194
  - test/fixtures/404.html.erb
195
+ - test/fixtures/related.raw.html.erb
195
196
  - test/fixtures/wrapper.html.erb
197
+ - test/test_helper.rb
196
198
  - test/search_path_setter_test.rb
197
- - test/skin_test.rb
198
- - test/google_analytics_test.rb
199
199
  - bin/render_slimmer_error
200
200
  homepage: http://github.com/alphagov/slimmer
201
201
  licenses: []
@@ -210,7 +210,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
210
210
  requirements:
211
211
  - - ">="
212
212
  - !ruby/object:Gem::Version
213
- hash: 1631614823969087882
213
+ hash: -1131306322543169285
214
214
  segments:
215
215
  - 0
216
216
  version: "0"
@@ -219,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - ">="
221
221
  - !ruby/object:Gem::Version
222
- hash: 1631614823969087882
222
+ hash: -1131306322543169285
223
223
  segments:
224
224
  - 0
225
225
  version: "0"
@@ -231,15 +231,15 @@ signing_key:
231
231
  specification_version: 3
232
232
  summary: Thinner than the skinner
233
233
  test_files:
234
- - test/typical_usage_test.rb
235
- - test/test_helper.rb
236
- - test/headers_test.rb
237
234
  - test/processors/header_context_inserter_test.rb
238
235
  - test/processors/body_inserter_test.rb
236
+ - test/skin_test.rb
237
+ - test/headers_test.rb
238
+ - test/google_analytics_test.rb
239
+ - test/typical_usage_test.rb
239
240
  - test/fixtures/500.html.erb
240
- - test/fixtures/related.raw.html.erb
241
241
  - test/fixtures/404.html.erb
242
+ - test/fixtures/related.raw.html.erb
242
243
  - test/fixtures/wrapper.html.erb
244
+ - test/test_helper.rb
243
245
  - test/search_path_setter_test.rb
244
- - test/skin_test.rb
245
- - test/google_analytics_test.rb