roadie 5.0.1 → 5.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.
- checksums.yaml +4 -4
- data/.github/workflows/main.yml +18 -9
- data/.rubocop.yml +8 -4
- data/.solargraph.yml +0 -4
- data/.standard.yml +1 -0
- data/Changelog.md +15 -2
- data/Gemfile +1 -0
- data/README.md +4 -2
- data/lib/roadie/document.rb +15 -7
- data/lib/roadie/null_url_rewriter.rb +1 -0
- data/lib/roadie/version.rb +1 -1
- data/roadie.gemspec +2 -3
- data/spec/integration_spec.rb +33 -2
- data/spec/lib/roadie/document_spec.rb +10 -0
- data/spec/lib/roadie/style_block_spec.rb +1 -1
- metadata +8 -43
- data/.autotest +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d61e03043b7a3086eeccdb7ca1e804ca3eebb5b6dabcc96d09bd5a7daa06b845
|
4
|
+
data.tar.gz: d48918c67a5fe53b88e1b2607269fdf353457e8829cc7dba84bdab3f308426d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e646c9a1864e7eb00fef92649583203721b551194ae9c5dd8f979200f8fae06f84b0298252dc3f851585f45047a66ae8f10c417dcdda776046cfc5c59267c0a
|
7
|
+
data.tar.gz: 0f01356119714952a4715ae0db43b96dc964168572943e7a9837cdbadadf493db56440484a6d6564fcccec6cbbc125076bf1cade4e588674ad9802dd7120d5a0
|
data/.github/workflows/main.yml
CHANGED
@@ -15,11 +15,11 @@ jobs:
|
|
15
15
|
strategy:
|
16
16
|
fail-fast: false
|
17
17
|
matrix:
|
18
|
-
ruby: ["2.
|
18
|
+
ruby: ["2.7", "3.0", "3.1", "3.2"]
|
19
19
|
|
20
20
|
steps:
|
21
21
|
- name: Checkout code
|
22
|
-
uses: actions/checkout@
|
22
|
+
uses: actions/checkout@v3
|
23
23
|
|
24
24
|
# This setup is not compatible with the way Travis CI was
|
25
25
|
# setup, so the cache will only work for the root folder.
|
@@ -34,10 +34,19 @@ jobs:
|
|
34
34
|
|
35
35
|
- uses: codecov/codecov-action@v2
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
37
|
+
# Does not work. The action runs in Ruby 2.6, which is not compatible with
|
38
|
+
# the gem and fails to install.
|
39
|
+
# This is very strange considering that the source of the action uses a
|
40
|
+
# Dockerfile with Ruby 2.7. However, I don't want to spend time to fix this
|
41
|
+
# in a passively maintained gem.
|
42
|
+
#
|
43
|
+
# lint:
|
44
|
+
# runs-on: ubuntu-latest
|
45
|
+
# steps:
|
46
|
+
# - name: standardrb
|
47
|
+
# env:
|
48
|
+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
49
|
+
# uses: amoeba/standardrb-action@v2
|
50
|
+
# permissions:
|
51
|
+
# checks: write
|
52
|
+
# contents: read
|
data/.rubocop.yml
CHANGED
data/.solargraph.yml
CHANGED
data/.standard.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby_version: 2.7
|
data/Changelog.md
CHANGED
@@ -1,8 +1,21 @@
|
|
1
1
|
### dev
|
2
2
|
|
3
|
-
[full changelog](https://github.com/Mange/roadie/compare/v5.0
|
3
|
+
[full changelog](https://github.com/Mange/roadie/compare/v5.2.0...master)
|
4
4
|
|
5
|
-
|
5
|
+
### 5.2.0
|
6
|
+
|
7
|
+
[full changelog](https://github.com/Mange/roadie/compare/v5.1.0...v5.2.0)
|
8
|
+
|
9
|
+
* Upgrade to Nokogiri `~>` 1.15.
|
10
|
+
* Drop support for Ruby 2.6.
|
11
|
+
* Add official support for Ruby 3.2.
|
12
|
+
|
13
|
+
### 5.1.0
|
14
|
+
|
15
|
+
[full changelog](https://github.com/Mange/roadie/compare/v5.0.1...v5.1.0)
|
16
|
+
|
17
|
+
* Support passing serialization options to Nokogiri with `serialization_options=` method -
|
18
|
+
[Dmytro Savochkin](https://github.com/dmytro-savochkin). (#171)
|
6
19
|
|
7
20
|
### 5.0.1
|
8
21
|
|
data/Gemfile
CHANGED
@@ -8,3 +8,4 @@ gem "codecov", group: :test, require: false
|
|
8
8
|
# Not actually required to run the tests for the gem, but a real convenience
|
9
9
|
# for local development.
|
10
10
|
gem "standard", group: [:test, :development], require: false
|
11
|
+
gem "solargraph", group: [:test, :development], require: false
|
data/README.md
CHANGED
@@ -54,7 +54,7 @@ Install & Usage
|
|
54
54
|
[Add this gem to your Gemfile as recommended by Rubygems](http://rubygems.org/gems/roadie) and run `bundle install`.
|
55
55
|
|
56
56
|
```ruby
|
57
|
-
gem 'roadie', '~>
|
57
|
+
gem 'roadie', '~> 5.2'
|
58
58
|
```
|
59
59
|
|
60
60
|
You can then create a new instance of a Roadie document:
|
@@ -94,6 +94,8 @@ Your document instance can be configured with several options:
|
|
94
94
|
* `external_asset_providers` - A list of asset providers that are invoked when absolute CSS URLs are referenced. See below.
|
95
95
|
* `before_transformation` - A callback run before transformation starts.
|
96
96
|
* `after_transformation` - A callback run after transformation is completed.
|
97
|
+
* `serialization_options` - An integer bitmap of options passed along to Nokogiri during serialization.
|
98
|
+
By default it's `Nokogiri::XML::Node::SaveOptions::NO_DECLARATION | Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS`.
|
97
99
|
|
98
100
|
### Making URLs absolute ###
|
99
101
|
|
@@ -448,10 +450,10 @@ Build Status
|
|
448
450
|
|
449
451
|
Tested with Github CI using:
|
450
452
|
|
451
|
-
* MRI 2.6
|
452
453
|
* MRI 2.7
|
453
454
|
* MRI 3.0
|
454
455
|
* MRI 3.1
|
456
|
+
* MRI 3.2
|
455
457
|
|
456
458
|
Let me know if you want any other runtime supported officially.
|
457
459
|
|
data/lib/roadie/document.rb
CHANGED
@@ -42,6 +42,10 @@ module Roadie
|
|
42
42
|
# which would change the styling on the page
|
43
43
|
attr_accessor :merge_media_queries
|
44
44
|
|
45
|
+
# Integer representing a bitmap set of options used by Nokogiri during serialization.
|
46
|
+
# For the complete set of available options look into +Nokogiri::XML::Node::SaveOptions+.
|
47
|
+
attr_reader :serialization_options
|
48
|
+
|
45
49
|
# The mode to generate markup in. Valid values are `:html` (default) and `:xhtml`.
|
46
50
|
attr_reader :mode
|
47
51
|
|
@@ -49,6 +53,9 @@ module Roadie
|
|
49
53
|
def initialize(html)
|
50
54
|
@keep_uninlinable_css = true
|
51
55
|
@merge_media_queries = true
|
56
|
+
@serialization_options =
|
57
|
+
Nokogiri::XML::Node::SaveOptions::NO_DECLARATION |
|
58
|
+
Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS
|
52
59
|
@html = html
|
53
60
|
@asset_providers = ProviderList.wrap(FilesystemProvider.new)
|
54
61
|
@external_asset_providers = ProviderList.empty
|
@@ -137,6 +144,13 @@ module Roadie
|
|
137
144
|
@external_asset_providers = ProviderList.wrap(list)
|
138
145
|
end
|
139
146
|
|
147
|
+
# Integer representing a bitmap set of options used by Nokogiri during serialization.
|
148
|
+
# For the complete set of available options look into +Nokogiri::XML::Node::SaveOptions+.
|
149
|
+
# (To change the mode in which the document is generated use {#mode=} however.)
|
150
|
+
def serialization_options=(options)
|
151
|
+
@serialization_options = options || 0
|
152
|
+
end
|
153
|
+
|
140
154
|
# Change the mode. The mode affects how the resulting markup is generated.
|
141
155
|
#
|
142
156
|
# Valid modes:
|
@@ -187,13 +201,7 @@ module Roadie
|
|
187
201
|
xml: save_options::AS_XML
|
188
202
|
}.fetch(mode)
|
189
203
|
|
190
|
-
dom.dup.to_html(
|
191
|
-
save_with: (
|
192
|
-
save_options::NO_DECLARATION |
|
193
|
-
save_options::NO_EMPTY_TAGS |
|
194
|
-
format
|
195
|
-
)
|
196
|
-
)
|
204
|
+
dom.dup.to_html(save_with: (serialization_options | format))
|
197
205
|
end
|
198
206
|
|
199
207
|
def make_url_rewriter
|
data/lib/roadie/version.rb
CHANGED
data/roadie.gemspec
CHANGED
@@ -15,9 +15,9 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.description = "Roadie tries to make sending HTML emails a little less painful by inlining stylesheets and rewriting relative URLs for you."
|
16
16
|
s.license = "MIT"
|
17
17
|
|
18
|
-
s.required_ruby_version = ">= 2.
|
18
|
+
s.required_ruby_version = ">= 2.7"
|
19
19
|
|
20
|
-
s.add_dependency "nokogiri", "~> 1.
|
20
|
+
s.add_dependency "nokogiri", "~> 1.15"
|
21
21
|
s.add_dependency "css_parser", "~> 1.4"
|
22
22
|
|
23
23
|
s.add_development_dependency "rake"
|
@@ -29,5 +29,4 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.require_paths = %w[lib]
|
30
30
|
|
31
31
|
s.files = `git ls-files`.split("\n")
|
32
|
-
s.test_files = `git ls-files -- spec/*`.split("\n")
|
33
32
|
end
|
data/spec/integration_spec.rb
CHANGED
@@ -251,8 +251,7 @@ describe "Roadie functionality" do
|
|
251
251
|
result = parse_html document.transform
|
252
252
|
|
253
253
|
expect(result.at_css("a.one")["href"]).to eq("https://myapp.com/rails/app/about_us")
|
254
|
-
|
255
|
-
expect(result.at_css("a.two")["href"]).to eq("%24UNSUBSCRIBE_URL")
|
254
|
+
expect(result.at_css("a.two")["href"]).to eq("$UNSUBSCRIBE_URL")
|
256
255
|
|
257
256
|
expect(result).to have_styling("color" => "green").at_selector("a.one")
|
258
257
|
expect(result).to have_styling("color" => "green").at_selector("a.two")
|
@@ -398,6 +397,38 @@ describe "Roadie functionality" do
|
|
398
397
|
expect(actual_result).to eq(expected_result)
|
399
398
|
end
|
400
399
|
|
400
|
+
it "adds XML declaration into XHTML with no serialization options prohibiting it" do
|
401
|
+
document = Roadie::Document.new <<-HTML
|
402
|
+
<html>
|
403
|
+
<head>
|
404
|
+
<title>Greetings</title>
|
405
|
+
</head>
|
406
|
+
</html>
|
407
|
+
HTML
|
408
|
+
|
409
|
+
document.mode = :xhtml
|
410
|
+
document.serialization_options = 0
|
411
|
+
result = document.transform
|
412
|
+
|
413
|
+
expect(result).to match(/\A<\?xml[^>]*?>/i)
|
414
|
+
end
|
415
|
+
|
416
|
+
it "does not add XML declaration into XHTML with serialization options prohibiting it" do
|
417
|
+
document = Roadie::Document.new <<-HTML
|
418
|
+
<html>
|
419
|
+
<head>
|
420
|
+
<title>Greetings</title>
|
421
|
+
</head>
|
422
|
+
</html>
|
423
|
+
HTML
|
424
|
+
|
425
|
+
document.mode = :xhtml
|
426
|
+
document.serialization_options = Nokogiri::XML::Node::SaveOptions::NO_DECLARATION
|
427
|
+
result = document.transform
|
428
|
+
|
429
|
+
expect(result).not_to match(/\A<\?xml[^>]*?>/i)
|
430
|
+
end
|
431
|
+
|
401
432
|
describe "if merge_media_queries is set to false" do
|
402
433
|
it "doesn't group non-inlineable media queries in the head" do
|
403
434
|
document = Roadie::Document.new <<-HTML
|
@@ -17,6 +17,16 @@ module Roadie
|
|
17
17
|
expect(document.url_options).to eq({host: "foo.bar"})
|
18
18
|
end
|
19
19
|
|
20
|
+
it "has an accessor for serialization options" do
|
21
|
+
serialization_options = Nokogiri::XML::Node::SaveOptions::FORMAT |
|
22
|
+
Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS
|
23
|
+
document.serialization_options = serialization_options
|
24
|
+
expect(document.serialization_options).to eq(serialization_options)
|
25
|
+
|
26
|
+
document.serialization_options = nil
|
27
|
+
expect(document.serialization_options).to eq(0)
|
28
|
+
end
|
29
|
+
|
20
30
|
it "has a setting for keeping uninlinable styles" do
|
21
31
|
expect(document.keep_uninlinable_css).to be true
|
22
32
|
document.keep_uninlinable_css = false
|
@@ -39,7 +39,7 @@ module Roadie
|
|
39
39
|
context "when one of media queries includes feature condition" do
|
40
40
|
it "returns false" do
|
41
41
|
selector = double "Selector", inlinable?: "maybe"
|
42
|
-
expect(StyleBlock.new(selector, [], [:all, :
|
42
|
+
expect(StyleBlock.new(selector, [], [:all, :"screen (min-width: 300px)"]).inlinable?).to be(false)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roadie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Magnus Bergmark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 1980-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.15'
|
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.
|
26
|
+
version: '1.15'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: css_parser
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,11 +104,11 @@ extra_rdoc_files:
|
|
104
104
|
- README.md
|
105
105
|
- Changelog.md
|
106
106
|
files:
|
107
|
-
- ".autotest"
|
108
107
|
- ".github/workflows/main.yml"
|
109
108
|
- ".gitignore"
|
110
109
|
- ".rubocop.yml"
|
111
110
|
- ".solargraph.yml"
|
111
|
+
- ".standard.yml"
|
112
112
|
- ".yardopts"
|
113
113
|
- Changelog.md
|
114
114
|
- Gemfile
|
@@ -190,50 +190,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
190
190
|
requirements:
|
191
191
|
- - ">="
|
192
192
|
- !ruby/object:Gem::Version
|
193
|
-
version: '2.
|
193
|
+
version: '2.7'
|
194
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
195
|
requirements:
|
196
196
|
- - ">="
|
197
197
|
- !ruby/object:Gem::Version
|
198
198
|
version: '0'
|
199
199
|
requirements: []
|
200
|
-
rubygems_version: 3.
|
200
|
+
rubygems_version: 3.4.17
|
201
201
|
signing_key:
|
202
202
|
specification_version: 4
|
203
203
|
summary: Making HTML emails comfortable for the Ruby rockstars
|
204
|
-
test_files:
|
205
|
-
- spec/fixtures/big_em.css
|
206
|
-
- spec/fixtures/stylesheets/green.css
|
207
|
-
- spec/hash_as_cache_store_spec.rb
|
208
|
-
- spec/integration_spec.rb
|
209
|
-
- spec/lib/roadie/asset_scanner_spec.rb
|
210
|
-
- spec/lib/roadie/cached_provider_spec.rb
|
211
|
-
- spec/lib/roadie/css_not_found_spec.rb
|
212
|
-
- spec/lib/roadie/deduplicator_spec.rb
|
213
|
-
- spec/lib/roadie/document_spec.rb
|
214
|
-
- spec/lib/roadie/filesystem_provider_spec.rb
|
215
|
-
- spec/lib/roadie/inliner_spec.rb
|
216
|
-
- spec/lib/roadie/markup_improver_spec.rb
|
217
|
-
- spec/lib/roadie/net_http_provider_spec.rb
|
218
|
-
- spec/lib/roadie/null_provider_spec.rb
|
219
|
-
- spec/lib/roadie/null_url_rewriter_spec.rb
|
220
|
-
- spec/lib/roadie/path_rewriter_provider_spec.rb
|
221
|
-
- spec/lib/roadie/provider_list_spec.rb
|
222
|
-
- spec/lib/roadie/selector_spec.rb
|
223
|
-
- spec/lib/roadie/style_attribute_builder_spec.rb
|
224
|
-
- spec/lib/roadie/style_block_spec.rb
|
225
|
-
- spec/lib/roadie/style_property_spec.rb
|
226
|
-
- spec/lib/roadie/stylesheet_spec.rb
|
227
|
-
- spec/lib/roadie/test_provider_spec.rb
|
228
|
-
- spec/lib/roadie/url_generator_spec.rb
|
229
|
-
- spec/lib/roadie/url_rewriter_spec.rb
|
230
|
-
- spec/lib/roadie/utils_spec.rb
|
231
|
-
- spec/shared_examples/asset_provider.rb
|
232
|
-
- spec/shared_examples/url_rewriter.rb
|
233
|
-
- spec/spec_helper.rb
|
234
|
-
- spec/support/have_attribute_matcher.rb
|
235
|
-
- spec/support/have_node_matcher.rb
|
236
|
-
- spec/support/have_selector_matcher.rb
|
237
|
-
- spec/support/have_styling_matcher.rb
|
238
|
-
- spec/support/have_xpath_matcher.rb
|
239
|
-
- spec/support/test_provider.rb
|
204
|
+
test_files: []
|
data/.autotest
DELETED