roadie 2.3.2 → 2.3.3
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.
- data/Changelog.md +11 -2
- data/Gemfile.lock +4 -4
- data/README.md +1 -1
- data/lib/roadie/action_mailer_extensions.rb +9 -2
- data/lib/roadie/inliner.rb +17 -3
- data/lib/roadie/version.rb +1 -1
- data/spec/lib/roadie/action_mailer_extensions_spec.rb +19 -8
- data/spec/lib/roadie/inliner_spec.rb +20 -0
- metadata +4 -4
data/Changelog.md
CHANGED
@@ -1,8 +1,17 @@
|
|
1
1
|
### dev
|
2
2
|
|
3
|
-
[full changelog](https://github.com/Mange/roadie/compare/v2.3.
|
3
|
+
[full changelog](https://github.com/Mange/roadie/compare/v2.3.3...master)
|
4
4
|
|
5
|
-
*
|
5
|
+
* No changes yet.
|
6
|
+
|
7
|
+
### 2.3.3
|
8
|
+
|
9
|
+
[full changelog](https://github.com/Mange/roadie/compare/v2.3.2...v2.3.3)
|
10
|
+
|
11
|
+
* Enhancements:
|
12
|
+
* Allow proc objects to the `:css` option
|
13
|
+
* Bug fixes:
|
14
|
+
* Ignore HTML comments and CDATA sections in CSS (support TinyMCE)
|
6
15
|
|
7
16
|
### 2.3.2
|
8
17
|
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
roadie (2.3.
|
4
|
+
roadie (2.3.3)
|
5
5
|
actionmailer (> 3.0.0, < 3.3.0)
|
6
6
|
css_parser
|
7
7
|
nokogiri (>= 1.4.4)
|
@@ -37,7 +37,7 @@ GEM
|
|
37
37
|
activemodel (= 3.0.12)
|
38
38
|
activesupport (= 3.0.12)
|
39
39
|
activesupport (3.0.12)
|
40
|
-
addressable (2.2
|
40
|
+
addressable (2.3.2)
|
41
41
|
appraisal (0.4.1)
|
42
42
|
bundler
|
43
43
|
rake
|
@@ -65,8 +65,8 @@ GEM
|
|
65
65
|
mime-types (~> 1.16)
|
66
66
|
treetop (~> 1.4.8)
|
67
67
|
mime-types (1.18)
|
68
|
-
multi_json (1.
|
69
|
-
nokogiri (1.5.
|
68
|
+
multi_json (1.3.6)
|
69
|
+
nokogiri (1.5.5)
|
70
70
|
polyglot (0.3.3)
|
71
71
|
rack (1.2.5)
|
72
72
|
rack-mount (0.6.14)
|
data/README.md
CHANGED
@@ -38,7 +38,7 @@ Let me know if you want any other combination supported officially.
|
|
38
38
|
|
39
39
|
### Versioning ###
|
40
40
|
|
41
|
-
This project follows [
|
41
|
+
This project follows [Semantic Versioning](http://semver.org/) and has been since version 1.0.0.
|
42
42
|
|
43
43
|
Features
|
44
44
|
--------
|
@@ -46,8 +46,15 @@ module Roadie
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def css_targets
|
49
|
-
|
50
|
-
|
49
|
+
Array.wrap(@targets || []).map { |target| resolve_target(target) }.compact.map(&:to_s)
|
50
|
+
end
|
51
|
+
|
52
|
+
def resolve_target(target)
|
53
|
+
if target.respond_to? :call
|
54
|
+
target.call
|
55
|
+
else
|
56
|
+
target
|
57
|
+
end
|
51
58
|
end
|
52
59
|
end
|
53
60
|
end
|
data/lib/roadie/inliner.rb
CHANGED
@@ -65,15 +65,15 @@ module Roadie
|
|
65
65
|
|
66
66
|
def parsed_css
|
67
67
|
CssParser::Parser.new.tap do |parser|
|
68
|
-
parser.add_block!(css) if css
|
69
|
-
parser.add_block!(inline_css)
|
68
|
+
parser.add_block! clean_css(css) if css
|
69
|
+
parser.add_block! clean_css(inline_css)
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
73
|
def adjust_html
|
74
74
|
Nokogiri::HTML.parse(html).tap do |document|
|
75
75
|
yield document
|
76
|
-
end.to_html
|
76
|
+
end.dup.to_html
|
77
77
|
end
|
78
78
|
|
79
79
|
def add_missing_structure
|
@@ -207,5 +207,19 @@ module Roadie
|
|
207
207
|
absolute_path_url or blacklisted_element
|
208
208
|
end
|
209
209
|
end
|
210
|
+
|
211
|
+
CLEANING_MATCHER = /
|
212
|
+
(^\s* # Beginning-of-lines matches
|
213
|
+
(<!\[CDATA\[)|
|
214
|
+
(<!--+)
|
215
|
+
)|( # End-of-line matches
|
216
|
+
(--+>)|
|
217
|
+
(\]\]>)
|
218
|
+
$)
|
219
|
+
/x.freeze
|
220
|
+
|
221
|
+
def clean_css(css)
|
222
|
+
css.gsub(CLEANING_MATCHER, '')
|
223
|
+
end
|
210
224
|
end
|
211
225
|
end
|
data/lib/roadie/version.rb
CHANGED
@@ -30,6 +30,22 @@ module Roadie
|
|
30
30
|
Roadie.stub(:current_provider => provider)
|
31
31
|
end
|
32
32
|
|
33
|
+
it "uses the default CSS when :css is not specified" do
|
34
|
+
expect_global_css ['default']
|
35
|
+
mailer.default_css
|
36
|
+
end
|
37
|
+
|
38
|
+
it "uses the specified CSS instead of the default" do
|
39
|
+
expect_global_css ['some', 'other/files']
|
40
|
+
mailer.override_css([:some, 'other/files'])
|
41
|
+
end
|
42
|
+
|
43
|
+
it "allows procs defining the CSS files to use" do
|
44
|
+
expect_global_css ['from proc']
|
45
|
+
proc = lambda { 'from proc' }
|
46
|
+
mailer.override_css([proc])
|
47
|
+
end
|
48
|
+
|
33
49
|
it "uses no global CSS when :css is set to nil" do
|
34
50
|
expect_global_css []
|
35
51
|
mailer.override_css(nil)
|
@@ -40,14 +56,9 @@ module Roadie
|
|
40
56
|
mailer.override_css(false)
|
41
57
|
end
|
42
58
|
|
43
|
-
it "uses
|
44
|
-
expect_global_css [
|
45
|
-
mailer.
|
46
|
-
end
|
47
|
-
|
48
|
-
it "uses the specified CSS instead of the default" do
|
49
|
-
expect_global_css ['some', 'other/files']
|
50
|
-
mailer.override_css([:some, 'other/files'])
|
59
|
+
it "uses no global CSS when :css is set to a proc returning nil" do
|
60
|
+
expect_global_css []
|
61
|
+
mailer.override_css(lambda { nil })
|
51
62
|
end
|
52
63
|
end
|
53
64
|
|
@@ -115,6 +115,26 @@ describe Roadie::Inliner do
|
|
115
115
|
expect { rendering('<p></p>') }.not_to raise_error
|
116
116
|
end
|
117
117
|
|
118
|
+
it 'ignores HTML comments and CDATA sections' do
|
119
|
+
# TinyMCE posts invalid CSS. We support that just to be pragmatic.
|
120
|
+
use_css %(<![CDATA[
|
121
|
+
<!--
|
122
|
+
p { color: green }
|
123
|
+
-->
|
124
|
+
]]>)
|
125
|
+
expect { rendering '<p></p>' }.not_to raise_error
|
126
|
+
|
127
|
+
use_css %(
|
128
|
+
<!--
|
129
|
+
<![CDATA[
|
130
|
+
<![CDATA[
|
131
|
+
span { color: red }
|
132
|
+
]]>
|
133
|
+
-->
|
134
|
+
)
|
135
|
+
expect { rendering '<p></p>' }.not_to raise_error
|
136
|
+
end
|
137
|
+
|
118
138
|
describe "inline <style> element" do
|
119
139
|
it "is used for inlined styles" do
|
120
140
|
rendering(<<-HTML).should have_styling([['color', 'green'], ['font-size', '1.1em']])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roadie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -206,7 +206,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
206
206
|
version: '0'
|
207
207
|
segments:
|
208
208
|
- 0
|
209
|
-
hash:
|
209
|
+
hash: 2753670790342683218
|
210
210
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
211
|
none: false
|
212
212
|
requirements:
|
@@ -215,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
215
215
|
version: '0'
|
216
216
|
segments:
|
217
217
|
- 0
|
218
|
-
hash:
|
218
|
+
hash: 2753670790342683218
|
219
219
|
requirements: []
|
220
220
|
rubyforge_project:
|
221
221
|
rubygems_version: 1.8.24
|