premailer 1.21.0 → 1.22.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
2
  SHA256:
3
- metadata.gz: 47eb32064c7ed2912f426d2666ceb0aba0bd7a7f9c235bbc20e86bf961374688
4
- data.tar.gz: 84dc0c5fa0331965aaa552f542d05bc2165cc140b98b25826fa7eb4e0470167e
3
+ metadata.gz: f373e83545e1f1b1ca346a0bfcfe2fa79daf3b0b64e71f2b346e19421495669c
4
+ data.tar.gz: ba3eb857e1fd0c956489566776b8f911a8da10372aad4932c89fb7c6c0e65d68
5
5
  SHA512:
6
- metadata.gz: 3cc088f586ad72db34ed8cf8a44f7b9cdffd4ce1ccbea2009160f228364683f64b7e4891b914c8db4d4c04d3603b792648800912eff6523650c99c5702af17d2
7
- data.tar.gz: 023ecd473bd37bf98b7f9e551bda5f7daf494e4f56bad458aa66d01d9e30e7647d514b13c7560aae97f3b06a00c79228a765cc4698a838d1575adc1ef1b673a6
6
+ metadata.gz: ba181a7933d0281f01de3b91956282d15b5958ca544e57ed9dc7a79923140f4e6b9c873ee77cd1e84060db624194cbf33cf90078395e66edea714d1ca30d2653
7
+ data.tar.gz: 7e61434faf7ed25db77f310fb9adc322322deb0dacfc5ec763645920f0d3c51ebefe50dddc58a2591dce99415cc9da7a4fa9b4b484289a1e6934ebdb143a8b14
@@ -61,14 +61,12 @@ class Premailer
61
61
  doc.search("*[@style]").each do |el|
62
62
  style = el.attributes['style'].to_s
63
63
 
64
- declarations = []
65
- style.scan(/\[SPEC\=([\d]+)\[(.[^\]\]]*)\]\]/).each do |declaration|
66
- begin
67
- rs = CssParser::RuleSet.new(nil, declaration[1].to_s, declaration[0].to_i)
68
- declarations << rs
69
- rescue ArgumentError => e
70
- raise e if @options[:rule_set_exceptions]
71
- end
64
+ declarations = style.scan(/\[SPEC\=([\d]+)\[(.[^\]\]]*)\]\]/).filter_map do |declaration|
65
+ rs = Premailer::CachedRuleSet.new(nil, declaration[1].to_s, declaration[0].to_i)
66
+ rs.expand_shorthand!
67
+ rs
68
+ rescue ArgumentError => e
69
+ raise e if @options[:rule_set_exceptions]
72
70
  end
73
71
 
74
72
  # Perform style folding
@@ -0,0 +1,12 @@
1
+ class Premailer
2
+ class CachedRuleSet < CssParser::RuleSet
3
+ # we call this early to find errors but css-parser calls it in .merge again
4
+ # so to prevent slowdown and bugs we refuse to run it twice on the same ruleset
5
+ # ideally should be upstreamed into css-parser
6
+ def expand_shorthand!
7
+ super unless @expand_shorthand
8
+ ensure
9
+ @expand_shorthand = true
10
+ end
11
+ end
12
+ end
@@ -1,4 +1,4 @@
1
1
  class Premailer
2
2
  # Premailer version.
3
- VERSION = '1.21.0'.freeze
3
+ VERSION = '1.22.0'.freeze
4
4
  end
data/lib/premailer.rb CHANGED
@@ -9,3 +9,4 @@ require 'premailer/adapter'
9
9
  require 'premailer/adapter/rgb_to_hex'
10
10
  require 'premailer/html_to_plain_text'
11
11
  require 'premailer/premailer'
12
+ require 'premailer/cached_rule_set'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: premailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.21.0
4
+ version: 1.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dunae
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-21 00:00:00.000000000 Z
11
+ date: 2023-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: css_parser
@@ -187,6 +187,7 @@ files:
187
187
  - lib/premailer/adapter/nokogiri_fast.rb
188
188
  - lib/premailer/adapter/nokogumbo.rb
189
189
  - lib/premailer/adapter/rgb_to_hex.rb
190
+ - lib/premailer/cached_rule_set.rb
190
191
  - lib/premailer/executor.rb
191
192
  - lib/premailer/html_to_plain_text.rb
192
193
  - lib/premailer/premailer.rb