script_relocator 0.2.0 → 0.3.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
- SHA1:
3
- metadata.gz: 39e6c523f8d2cbc54c1f63039ae13f5699ada7a3
4
- data.tar.gz: 124d5de466318ff768cfd6768889a53b6a70f94d
2
+ SHA256:
3
+ metadata.gz: 6bdb0017257aa35b1a2f834c4139da803c49ff1dbecf56b181735eb34b048e18
4
+ data.tar.gz: 03d011ef60329e2f9027780cad25a87a47f6d77ae8c4ad5e93ae9198f3c6ca9e
5
5
  SHA512:
6
- metadata.gz: 8715bdd5ffc289e0d96d05fa6909155a67f62973d245e8f92fe23ed1ce3380aba2c4bb04f4ceedb0050cd0f8bf7e9c3211e29ab530d04a29fb5cb8e37bd40398
7
- data.tar.gz: 2af792b70b40a17ad0d44232fd165dd75b49971cc25c0e46b6ea91cd56fda2ad0615209b5a4082956c68dbbd9b90eccb1d6582d7b249ee21926ff62003f7de6a
6
+ metadata.gz: 8f73fd57dc5f6cb36048b990485622148e43ab0be2b109b9fb63e752d2f98f18112a5fa790f42a8048d49bbb2975d46ae4926968f4e4114308456a2029444d3d
7
+ data.tar.gz: 29f091491c99629c61395b0bdb8c8760be2bb56e59cb28c6088d9c6baabb590cf8e8e0010536117eafc87380e500e84c7b729350e71be53f0c84147f949161f0
@@ -13,15 +13,18 @@ module ScriptRelocator
13
13
  end
14
14
  response_body = ''
15
15
  response.each { |part| response_body << part }
16
+ return status, headers, response unless response_body =~ /\A<!DOCTYPE/
16
17
  doc = Nokogiri::HTML(response_body)
18
+ target = doc.at('body')
17
19
  scripts = doc.css('script')
18
20
  return status, headers, response if scripts.empty?
19
21
  scripts.each do |s|
22
+ next if s['async'] == 'async' || s['defer'] == 'defer'
20
23
  s['data-turbolinks-eval'] = 'false' if s.parent.name == 'head'
21
24
  s.remove
22
- doc.at('body') << s
25
+ target << s
23
26
  end
24
- transformed_body = doc.canonicalize
27
+ transformed_body = doc.to_html(save_with: Nokogiri::XML::Node::SaveOptions::NO_DECLARATION | Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS | Nokogiri::XML::Node::SaveOptions::AS_HTML)
25
28
  if headers.key?('Content-Length') &&
26
29
  headers['Content-Length'].to_i != transformed_body.length
27
30
  headers['Content-Length'] = transformed_body.length.to_s
@@ -1,3 +1,3 @@
1
1
  module ScriptRelocator
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -19,9 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_development_dependency 'bundler', '~> 1.10'
23
- spec.add_development_dependency 'minitest-reporters', '~> 1.1'
24
- spec.add_development_dependency 'rake', '~> 10.0'
22
+ spec.add_development_dependency 'bundler'
23
+ spec.add_development_dependency 'minitest-reporters'
24
+ spec.add_development_dependency 'rake'
25
25
 
26
26
  spec.add_runtime_dependency 'nokogiri', '~> 1.6'
27
27
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: script_relocator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uwe Kubosch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-15 00:00:00.000000000 Z
11
+ date: 2018-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '0'
20
20
  type: :development
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.10'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest-reporters
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.1'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.1'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '0'
48
48
  type: :development
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: '10.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.6.8
110
+ rubygems_version: 2.7.6
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Rack middleware to relocate JavaScript tags to the end of an HTML response