css_inline 0.12.0 → 0.13.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/README.md +22 -10
- data/ext/css_inline/Cargo.toml +1 -1
- data/ext/css_inline/src/lib.rs +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 341c8140008fc97311b7c05e23becedbfde8a2bb212cab1602f4fcf4b12d90aa
|
4
|
+
data.tar.gz: cbcb902ad4446aac95f369258cced29a9729fd19772f001e1faa1dd72641d324
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6ea53abccd62a28badf56f9298f54307fbff3609a46e6d79bdbf7e5a65171b92ae5d38363e426cda70e1e932117d983c6a302735d41fc82ad40ffb84948f15b
|
7
|
+
data.tar.gz: 7ada5bffbc4961928a6fe48e70e8bb3f73419cd86bc46315bca86ae55efb3c04ec046888b4eb9c98f4a20f80158d5d9387f28cf25fc20a916dea54c7e83c04e9
|
data/README.md
CHANGED
@@ -40,6 +40,7 @@ into:
|
|
40
40
|
- Can process multiple documents in parallel
|
41
41
|
- Works on Linux, Windows, and macOS
|
42
42
|
- Supports HTML5 & CSS3
|
43
|
+
- Tested on Ruby 2.7 and 3.2.
|
43
44
|
|
44
45
|
## Playground
|
45
46
|
|
@@ -124,6 +125,21 @@ The `data-css-inline="ignore"` attribute also allows you to skip `link` and `sty
|
|
124
125
|
</body>
|
125
126
|
```
|
126
127
|
|
128
|
+
Alternatively, you may keep `style` from being removed by using the `data-css-inline="keep"` attribute.
|
129
|
+
This is useful if you want to keep `@media` queries for responsive emails in separate `style` tags:
|
130
|
+
|
131
|
+
```html
|
132
|
+
<head>
|
133
|
+
<!-- Styles below are not removed -->
|
134
|
+
<style data-css-inline="keep">h1 { color:blue; }</style>
|
135
|
+
</head>
|
136
|
+
<body>
|
137
|
+
<h1>Big Text</h1>
|
138
|
+
</body>
|
139
|
+
```
|
140
|
+
|
141
|
+
Such tags will be kept in the resulting HTML even if the `keep_style_tags` option is set to `false`.
|
142
|
+
|
127
143
|
If you'd like to load stylesheets from your filesystem, use the `file://` scheme:
|
128
144
|
|
129
145
|
```ruby
|
@@ -141,19 +157,15 @@ It consistently outperforms `premailer`, offering speed increases often exceedin
|
|
141
157
|
|
142
158
|
The table below provides a detailed comparison between `css_inline` and `premailer` when inlining CSS into an HTML document (like in the Usage section above):
|
143
159
|
|
144
|
-
| | Size | `css_inline 0.
|
160
|
+
| | Size | `css_inline 0.13.0` | `premailer 1.21.0 with Nokogiri 1.15.2` | Difference |
|
145
161
|
|-------------------|---------|---------------------|------------------------------------------------|------------|
|
146
|
-
| Basic usage | 230 B |
|
147
|
-
| Realistic email 1 | 8.58 KB |
|
148
|
-
| Realistic email 2 | 4.3 KB |
|
149
|
-
| GitHub Page | 1.81 MB |
|
162
|
+
| Basic usage | 230 B | 7.79 µs | 417.56 µs | **53.57x** |
|
163
|
+
| Realistic email 1 | 8.58 KB | 149.56 µs | 9.73 ms | **65.07x** |
|
164
|
+
| Realistic email 2 | 4.3 KB | 93.19 µs | Error: Cannot parse 0 calc((100% - 500px) / 2) | - |
|
165
|
+
| GitHub Page | 1.81 MB | 237.03 ms | 3.02 s | **12.78x** |
|
150
166
|
|
151
167
|
Please refer to the `test/bench.rb` file to review the benchmark code.
|
152
|
-
The results displayed above were measured using stable `rustc 1.
|
153
|
-
|
154
|
-
## Ruby support
|
155
|
-
|
156
|
-
`css_inline` supports Ruby 2.7 and 3.2.
|
168
|
+
The results displayed above were measured using stable `rustc 1.75.0` on Ruby `3.2.2`.
|
157
169
|
|
158
170
|
## Further reading
|
159
171
|
|
data/ext/css_inline/Cargo.toml
CHANGED
data/ext/css_inline/src/lib.rs
CHANGED
@@ -25,7 +25,6 @@
|
|
25
25
|
rust_2018_compatibility,
|
26
26
|
rust_2021_compatibility
|
27
27
|
)]
|
28
|
-
#[allow(clippy::module_name_repetitions)]
|
29
28
|
use css_inline as rust_inline;
|
30
29
|
use magnus::{
|
31
30
|
class, define_module, function, method,
|
@@ -34,7 +33,7 @@ use magnus::{
|
|
34
33
|
RHash, Value,
|
35
34
|
};
|
36
35
|
use rayon::prelude::*;
|
37
|
-
use std::borrow::Cow;
|
36
|
+
use std::{borrow::Cow, sync::Arc};
|
38
37
|
|
39
38
|
type RubyResult<T> = Result<T, magnus::Error>;
|
40
39
|
|
@@ -76,6 +75,7 @@ fn parse_options<Req>(
|
|
76
75
|
load_remote_stylesheets: kwargs.4.unwrap_or(true),
|
77
76
|
extra_css: kwargs.5.map(Cow::Owned),
|
78
77
|
preallocate_node_capacity: kwargs.6.unwrap_or(32),
|
78
|
+
resolver: Arc::new(rust_inline::DefaultStylesheetResolver),
|
79
79
|
})
|
80
80
|
}
|
81
81
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: css_inline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Dygalo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
version: 3.3.26
|
125
125
|
requirements:
|
126
126
|
- Rust >= 1.65
|
127
|
-
rubygems_version: 3.4.
|
127
|
+
rubygems_version: 3.4.19
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
130
|
summary: High-performance library for inlining CSS into HTML 'style' attributes
|