inkcite 1.11.0 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -2
  3. data/assets/init/helpers.tsv +7 -0
  4. data/assets/social/facebook.png +0 -0
  5. data/assets/social/pintrest.png +0 -0
  6. data/assets/social/twitter.png +0 -0
  7. data/inkcite.gemspec +5 -4
  8. data/lib/inkcite.rb +17 -6
  9. data/lib/inkcite/animation.rb +135 -0
  10. data/lib/inkcite/cli/base.rb +5 -14
  11. data/lib/inkcite/cli/build.rb +3 -3
  12. data/lib/inkcite/cli/init.rb +3 -3
  13. data/lib/inkcite/cli/preview.rb +25 -1
  14. data/lib/inkcite/cli/server.rb +1 -1
  15. data/lib/inkcite/cli/validate.rb +2 -11
  16. data/lib/inkcite/email.rb +1 -1
  17. data/lib/inkcite/mailer.rb +5 -0
  18. data/lib/inkcite/minifier.rb +58 -11
  19. data/lib/inkcite/renderer.rb +10 -2
  20. data/lib/inkcite/renderer/base.rb +45 -3
  21. data/lib/inkcite/renderer/button.rb +16 -12
  22. data/lib/inkcite/renderer/container_base.rb +14 -4
  23. data/lib/inkcite/renderer/element.rb +13 -3
  24. data/lib/inkcite/renderer/image.rb +46 -19
  25. data/lib/inkcite/renderer/image_base.rb +3 -3
  26. data/lib/inkcite/renderer/in_browser.rb +1 -1
  27. data/lib/inkcite/renderer/link.rb +91 -59
  28. data/lib/inkcite/renderer/lorem.rb +9 -1
  29. data/lib/inkcite/renderer/mobile_image.rb +3 -11
  30. data/lib/inkcite/renderer/mobile_only.rb +48 -0
  31. data/lib/inkcite/renderer/outlook_background.rb +61 -13
  32. data/lib/inkcite/renderer/property.rb +1 -1
  33. data/lib/inkcite/renderer/responsive.rb +10 -8
  34. data/lib/inkcite/renderer/snow.rb +20 -10
  35. data/lib/inkcite/renderer/social.rb +128 -0
  36. data/lib/inkcite/renderer/table.rb +13 -1
  37. data/lib/inkcite/renderer/table_base.rb +3 -3
  38. data/lib/inkcite/renderer/td.rb +32 -7
  39. data/lib/inkcite/renderer/video_preview.rb +257 -0
  40. data/lib/inkcite/uploader.rb +3 -3
  41. data/lib/inkcite/util.rb +19 -5
  42. data/lib/inkcite/version.rb +1 -1
  43. data/lib/inkcite/view.rb +29 -18
  44. data/lib/inkcite/view/context.rb +30 -0
  45. data/test/animation_spec.rb +38 -0
  46. data/test/email_spec.rb +0 -4
  47. data/test/minifier_spec.rb +243 -4
  48. data/test/parser_spec.rb +0 -4
  49. data/test/project/helpers.tsv +3 -0
  50. data/test/renderer/button_spec.rb +15 -13
  51. data/test/renderer/div_spec.rb +13 -4
  52. data/test/renderer/element_spec.rb +1 -5
  53. data/test/renderer/footnote_spec.rb +0 -4
  54. data/test/renderer/image_spec.rb +27 -11
  55. data/test/renderer/link_spec.rb +14 -4
  56. data/test/renderer/lorem_spec.rb +0 -4
  57. data/test/renderer/mobile_image_spec.rb +3 -11
  58. data/test/renderer/mobile_only_spec.rb +21 -0
  59. data/test/renderer/mobile_style_spec.rb +1 -5
  60. data/test/renderer/outlook_background_spec.rb +61 -0
  61. data/test/renderer/redacted_spec.rb +0 -4
  62. data/test/renderer/social_spec.rb +53 -0
  63. data/test/renderer/span_spec.rb +0 -4
  64. data/test/renderer/table_spec.rb +8 -4
  65. data/test/renderer/td_spec.rb +0 -4
  66. data/test/renderer/video_preview_spec.rb +19 -0
  67. data/test/renderer_spec.rb +0 -4
  68. data/test/test_helper.rb +7 -0
  69. data/test/view_spec.rb +12 -4
  70. metadata +89 -56
@@ -1,7 +1,3 @@
1
- require 'minitest/spec'
2
- require 'minitest/autorun'
3
- require 'inkcite'
4
-
5
1
  describe Inkcite::Renderer::Table do
6
2
 
7
3
  before do
@@ -63,4 +59,12 @@ describe Inkcite::Renderer::Table do
63
59
  Inkcite::Renderer.render(markup, @view).must_equal(%Q(<!--[if mso]><table border=0 cellpadding=0 cellspacing=0 width=600><tr><td><![endif]--><table bgcolor=#009900 border=0 cellpadding=0 cellspacing=0 style="border:5px solid #f0f;max-width:600px" width=100%><tr><td dir=rtl style="font-size:0;text-align:center;vertical-align:middle"><!--[if mso]><table align=center border=0 cellpadding=0 cellspacing=0 width=100%><tr><![endif]--><!--[if mso]><td valign=top width=195><![endif]--><div class="fill" style="display:inline-block;vertical-align:top;width:195px"><table border=0 cellpadding=15 cellspacing=0 width=100%><tr><td align=left bgcolor=#000099 style="color:#ffffff;font-size:25px;padding:15px;text-align:left" valign=top>left</td></tr></table></div><!--[if mso]></td><![endif]--><!--[if mso]><td valign=middle width=195><![endif]--><div class="fill" style="display:inline-block;vertical-align:middle;width:195px"><table border=0 cellpadding=15 cellspacing=0 width=100%><tr><td align=center style="font-size:25px;padding:15px" valign=middle>centered two-line</td></tr></table></div><!--[if mso]></td><![endif]--><!--[if mso]><td valign=middle width=195><![endif]--><div class="fill" style="display:inline-block;vertical-align:middle;width:195px"><table border=0 cellpadding=15 cellspacing=0 width=100%><tr><td align=right bgcolor=#990000 style="color:#ffffff;font-size:30px;padding:15px" valign=middle>right<br>three<br>lines</td></tr></table></div><!--[if mso]></td><![endif]--><!--[if mso]></tr></table><![endif]--></td></tr></table><!--[if mso]></td></tr></table><![endif]-->))
64
60
  end
65
61
 
62
+ it 'supports CSS animation' do
63
+ Inkcite::Renderer.render('{table animation="video-frames 15s ease infinite"}', @view).must_equal('<table border=0 cellpadding=0 cellspacing=0 style="-webkit-animation:video-frames 15s ease infinite;animation:video-frames 15s ease infinite"><tr>')
64
+ end
65
+
66
+ it 'supports the tr-transition attribute' do
67
+ Inkcite::Renderer.render('{table tr-transition="all .5s cubic-bezier(0.075, 0.82, 0.165, 1)"}', @view).must_equal('<table border=0 cellpadding=0 cellspacing=0><tr style="transition:all .5s cubic-bezier(0.075, 0.82, 0.165, 1)">')
68
+ end
69
+
66
70
  end
@@ -1,7 +1,3 @@
1
- require 'minitest/spec'
2
- require 'minitest/autorun'
3
- require 'inkcite'
4
-
5
1
  describe Inkcite::Renderer::Td do
6
2
 
7
3
  before do
@@ -0,0 +1,19 @@
1
+ describe Inkcite::Renderer::VideoPreview do
2
+
3
+ before do
4
+ @view = Inkcite::Email.new('test/project/').view(:development, :email)
5
+ end
6
+
7
+ it 'renders an animated video preview' do
8
+ Inkcite::Renderer.render('{video-preview id="ripcurl" href="https://www.campaignmonitor.com/customers/ripcurl" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame%1.jpg" width=600 height=337 frames=3 bgcolor="#5b5f66" gradient="#1d1f21"}', @view).must_equal(%Q(<!--[if !vml]-->\n<a class="video" href="https://www.campaignmonitor.com/customers/ripcurl" style="background-color:#5b5f66;background-image:radial-gradient(circle at center, #5b5f66, #1d1f21);color:#0099cc;display:block;text-decoration:none" target=_blank>\n<table border=0 cellpadding=0 cellspacing=0 style="-webkit-animation:video1-frames 15s ease infinite;animation:video1-frames 15s ease infinite;background:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg) 0% 0% / cover no-repeat" width=100%><tr style="transition:all .5s cubic-bezier(0.075, 0.82, 0.165, 1)">\n<td width=25%>\n<img border=0 src=images/vp-150x337.png style="height:auto;opacity:0;visibility:hidden" width=100%>\n</td>\n<td align=center valign=middle width=50%>\n<div class="play-button" style="background-image: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.1)); border: 4px solid white; border-radius: 50%; box-shadow: 0 1px 2px rgba(0,0,0,0.3), inset 0 1px 2px rgba(0,0,0,0.3); height: 34px; margin: 0 auto; padding: 18px 16px 18px 24px; transition: transform .5s cubic-bezier(0.075, 0.82, 0.165, 1); width: 34px;">\n<div style="border-color: transparent transparent transparent white; border-style: solid; border-width: 17px 0 17px 30px; display: block; font-size: 0; height: 0; Margin: 0 auto; width: 0;">&nbsp;</div>\n</div>\n</td>\n<td width=25%>&nbsp;</td>\n</tr></table>\n</a>\n<div style="background-image:"url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg),url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame2.jpg),url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame3.jpg)";display:none"></div>\n<![endif]-->\n<!--[if vml]>\n<v:group xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" coordsize="600,337" coordorigin="0,0" href="["ripcurl", "https://www.campaignmonitor.com/customers/ripcurl", true]" style="width:600px;height:337px;">\n<v:rect fill="t" stroked="f" style="position:absolute;width:600;height:337;"><v:fill src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg" type="frame"/></v:rect>\n<v:oval fill="t" strokecolor="white" strokeweight="4px" style="position:absolute;left:261;top:"129;width:78;height:78"><v:fill color="black" opacity="30%" /></v:oval>\n<v:shape coordsize="24,32" path="m,l,32,24,16,xe" fillcolor="white" stroked="f" style="position:absolute;left:289;top:151;width:30;height:34;" />\n</v:group>\n<![endif]-->))
9
+ @view.styles.first.must_equal(%Q(.video:hover .play-button {\n transform: scale(1.1);\n}\n.video:hover tr {\n background-color: rgba(255, 255, 255, .2);\n}\n@keyframes video1-frames {\n 0% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg) }\n 22% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg) }\n 33% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame2.jpg) }\n 55% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame2.jpg) }\n 66% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame3.jpg) }\n 88% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame3.jpg) }\n 100% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg) }\n}\n@-webkit-keyframes video1-frames {\n 0% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg) }\n 22% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg) }\n 33% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame2.jpg) }\n 55% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame2.jpg) }\n 66% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame3.jpg) }\n 88% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame3.jpg) }\n 100% { background-image:url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/103009/frame1.jpg) }\n}\n))
10
+
11
+ # Verify that the transparent spacer image was created and then
12
+ # clean it up.
13
+ spacer_image = @view.email.image_path('vp-150x337.png')
14
+ File.exist?(spacer_image).must_equal(true)
15
+ File.delete(spacer_image)
16
+
17
+ end
18
+
19
+ end
@@ -1,7 +1,3 @@
1
- require 'minitest/spec'
2
- require 'minitest/autorun'
3
- require 'inkcite'
4
-
5
1
  describe Inkcite::Renderer do
6
2
 
7
3
  it 'converts #rgb to #rrggbb' do
@@ -0,0 +1,7 @@
1
+ require 'active_support/core_ext/kernel/reporting'
2
+
3
+ silence_warnings do
4
+ require 'minitest/spec'
5
+ require 'minitest/autorun'
6
+ require 'inkcite'
7
+ end
@@ -1,7 +1,3 @@
1
- require 'minitest/spec'
2
- require 'minitest/autorun'
3
- require 'inkcite'
4
-
5
1
  describe Inkcite::View do
6
2
 
7
3
  before do
@@ -17,4 +13,16 @@ describe Inkcite::View do
17
13
  @view[:'/multiline'].must_equal("This\n ends the\n multiline tag.")
18
14
  end
19
15
 
16
+ it 'can keep track if something has been rendered already' do
17
+ @view.eval_erb('<% if once? :trademark %>&trade;<% end %><% if once? :trademark %>&trade;<% end %>', 'source.html').must_equal('&trade;')
18
+ end
19
+
20
+ it 'can keep track if something has been rendered already with ERB exclusion' do
21
+ @view.eval_erb('<% if false %>invisible<% if once? :trademark %>&trade;<% end %><% end %><% if once? :trademark %>&trade;<% end %>', 'source.html').must_equal('&trade;')
22
+ end
23
+
24
+ it "knows the project's directory name as {project}" do
25
+ Inkcite::Renderer.render('{project}', @view).must_equal('project')
26
+ end
27
+
20
28
  end
metadata CHANGED
@@ -1,321 +1,335 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inkcite
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.0
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeffrey D. Hoffman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-10 00:00:00.000000000 Z
11
+ date: 2016-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
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
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: builder
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: chunky_png
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: erubis
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '>='
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
61
  version: '0'
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - '>='
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: faker
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '>='
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '>='
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: guard
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - '>='
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
89
  version: '0'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '>='
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: guard-livereload
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - '>='
101
+ - - ">="
88
102
  - !ruby/object:Gem::Version
89
103
  version: '0'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - '>='
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: htmlbeautifier
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - '>='
115
+ - - ">="
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - '>='
122
+ - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: image_optim
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - '>='
129
+ - - ">="
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0'
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - '>='
136
+ - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: image_optim_pack
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - '>='
143
+ - - ">="
130
144
  - !ruby/object:Gem::Version
131
145
  version: '0'
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - '>='
150
+ - - ">="
137
151
  - !ruby/object:Gem::Version
138
152
  version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
- name: litmus
154
+ name: listen
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - '>='
157
+ - - ">="
144
158
  - !ruby/object:Gem::Version
145
159
  version: '0'
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - '>='
164
+ - - ">="
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
- name: mail
168
+ name: litmus
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
- - - '>='
171
+ - - ">="
158
172
  - !ruby/object:Gem::Version
159
173
  version: '0'
160
174
  type: :runtime
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
- - - '>='
178
+ - - ">="
165
179
  - !ruby/object:Gem::Version
166
180
  version: '0'
167
181
  - !ruby/object:Gem::Dependency
168
- name: mailgun-ruby
182
+ name: mail
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
- - - '>='
185
+ - - ">="
172
186
  - !ruby/object:Gem::Version
173
187
  version: '0'
174
188
  type: :runtime
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
- - - '>='
192
+ - - ">="
179
193
  - !ruby/object:Gem::Version
180
194
  version: '0'
181
195
  - !ruby/object:Gem::Dependency
182
- name: net-sftp
196
+ name: mailgun-ruby
183
197
  requirement: !ruby/object:Gem::Requirement
184
198
  requirements:
185
- - - '>='
199
+ - - ">="
186
200
  - !ruby/object:Gem::Version
187
201
  version: '0'
188
202
  type: :runtime
189
203
  prerelease: false
190
204
  version_requirements: !ruby/object:Gem::Requirement
191
205
  requirements:
192
- - - '>='
206
+ - - ">="
193
207
  - !ruby/object:Gem::Version
194
208
  version: '0'
195
209
  - !ruby/object:Gem::Dependency
196
- name: nokogiri
210
+ name: net-sftp
197
211
  requirement: !ruby/object:Gem::Requirement
198
212
  requirements:
199
- - - '>='
213
+ - - ">="
200
214
  - !ruby/object:Gem::Version
201
215
  version: '0'
202
216
  type: :runtime
203
217
  prerelease: false
204
218
  version_requirements: !ruby/object:Gem::Requirement
205
219
  requirements:
206
- - - '>='
220
+ - - ">="
207
221
  - !ruby/object:Gem::Version
208
222
  version: '0'
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: rack
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
- - - '>='
227
+ - - ">="
214
228
  - !ruby/object:Gem::Version
215
229
  version: '0'
216
230
  type: :runtime
217
231
  prerelease: false
218
232
  version_requirements: !ruby/object:Gem::Requirement
219
233
  requirements:
220
- - - '>='
234
+ - - ">="
221
235
  - !ruby/object:Gem::Version
222
236
  version: '0'
223
237
  - !ruby/object:Gem::Dependency
224
238
  name: rack-livereload
225
239
  requirement: !ruby/object:Gem::Requirement
226
240
  requirements:
227
- - - '>='
241
+ - - ">="
228
242
  - !ruby/object:Gem::Version
229
243
  version: '0'
230
244
  type: :runtime
231
245
  prerelease: false
232
246
  version_requirements: !ruby/object:Gem::Requirement
233
247
  requirements:
234
- - - '>='
248
+ - - ">="
235
249
  - !ruby/object:Gem::Version
236
250
  version: '0'
237
251
  - !ruby/object:Gem::Dependency
238
252
  name: rubyzip
239
253
  requirement: !ruby/object:Gem::Requirement
240
254
  requirements:
241
- - - '>='
255
+ - - ">="
242
256
  - !ruby/object:Gem::Version
243
257
  version: '0'
244
258
  type: :runtime
245
259
  prerelease: false
246
260
  version_requirements: !ruby/object:Gem::Requirement
247
261
  requirements:
248
- - - '>='
262
+ - - ">="
249
263
  - !ruby/object:Gem::Version
250
264
  version: '0'
251
265
  - !ruby/object:Gem::Dependency
252
266
  name: thor
253
267
  requirement: !ruby/object:Gem::Requirement
254
268
  requirements:
255
- - - '>='
269
+ - - ">="
256
270
  - !ruby/object:Gem::Version
257
271
  version: '0'
258
272
  type: :runtime
259
273
  prerelease: false
260
274
  version_requirements: !ruby/object:Gem::Requirement
261
275
  requirements:
262
- - - '>='
276
+ - - ">="
263
277
  - !ruby/object:Gem::Version
264
278
  version: '0'
265
279
  - !ruby/object:Gem::Dependency
266
280
  name: yui-compressor
267
281
  requirement: !ruby/object:Gem::Requirement
268
282
  requirements:
269
- - - '>='
283
+ - - ">="
270
284
  - !ruby/object:Gem::Version
271
285
  version: '0'
272
286
  type: :runtime
273
287
  prerelease: false
274
288
  version_requirements: !ruby/object:Gem::Requirement
275
289
  requirements:
276
- - - '>='
290
+ - - ">="
277
291
  - !ruby/object:Gem::Version
278
292
  version: '0'
279
293
  - !ruby/object:Gem::Dependency
280
294
  name: bundler
281
295
  requirement: !ruby/object:Gem::Requirement
282
296
  requirements:
283
- - - ~>
297
+ - - ">="
284
298
  - !ruby/object:Gem::Version
285
- version: '1.1'
299
+ version: '0'
286
300
  type: :development
287
301
  prerelease: false
288
302
  version_requirements: !ruby/object:Gem::Requirement
289
303
  requirements:
290
- - - ~>
304
+ - - ">="
291
305
  - !ruby/object:Gem::Version
292
- version: '1.1'
306
+ version: '0'
293
307
  - !ruby/object:Gem::Dependency
294
308
  name: rake
295
309
  requirement: !ruby/object:Gem::Requirement
296
310
  requirements:
297
- - - '>='
311
+ - - ">="
298
312
  - !ruby/object:Gem::Version
299
313
  version: '0'
300
314
  type: :development
301
315
  prerelease: false
302
316
  version_requirements: !ruby/object:Gem::Requirement
303
317
  requirements:
304
- - - '>='
318
+ - - ">="
305
319
  - !ruby/object:Gem::Version
306
320
  version: '0'
307
321
  - !ruby/object:Gem::Dependency
308
322
  name: minitest
309
323
  requirement: !ruby/object:Gem::Requirement
310
324
  requirements:
311
- - - '>='
325
+ - - ">="
312
326
  - !ruby/object:Gem::Version
313
327
  version: '0'
314
328
  type: :development
315
329
  prerelease: false
316
330
  version_requirements: !ruby/object:Gem::Requirement
317
331
  requirements:
318
- - - '>='
332
+ - - ">="
319
333
  - !ruby/object:Gem::Version
320
334
  version: '0'
321
335
  description: An opinionated modern, responsive HTML email generator with integrated
@@ -340,9 +354,13 @@ files:
340
354
  - assets/init/helpers.tsv
341
355
  - assets/init/image_optim.yml
342
356
  - assets/init/source.html
357
+ - assets/social/facebook.png
358
+ - assets/social/pintrest.png
359
+ - assets/social/twitter.png
343
360
  - bin/inkcite
344
361
  - inkcite.gemspec
345
362
  - lib/inkcite.rb
363
+ - lib/inkcite/animation.rb
346
364
  - lib/inkcite/cli/base.rb
347
365
  - lib/inkcite/cli/build.rb
348
366
  - lib/inkcite/cli/init.rb
@@ -372,6 +390,7 @@ files:
372
390
  - lib/inkcite/renderer/litmus_analytics.rb
373
391
  - lib/inkcite/renderer/lorem.rb
374
392
  - lib/inkcite/renderer/mobile_image.rb
393
+ - lib/inkcite/renderer/mobile_only.rb
375
394
  - lib/inkcite/renderer/mobile_style.rb
376
395
  - lib/inkcite/renderer/mobile_toggle.rb
377
396
  - lib/inkcite/renderer/outlook_background.rb
@@ -381,10 +400,12 @@ files:
381
400
  - lib/inkcite/renderer/redacted.rb
382
401
  - lib/inkcite/renderer/responsive.rb
383
402
  - lib/inkcite/renderer/snow.rb
403
+ - lib/inkcite/renderer/social.rb
384
404
  - lib/inkcite/renderer/span.rb
385
405
  - lib/inkcite/renderer/table.rb
386
406
  - lib/inkcite/renderer/table_base.rb
387
407
  - lib/inkcite/renderer/td.rb
408
+ - lib/inkcite/renderer/video_preview.rb
388
409
  - lib/inkcite/uploader.rb
389
410
  - lib/inkcite/util.rb
390
411
  - lib/inkcite/version.rb
@@ -392,6 +413,7 @@ files:
392
413
  - lib/inkcite/view/context.rb
393
414
  - lib/inkcite/view/media_query.rb
394
415
  - lib/inkcite/view/tag_stack.rb
416
+ - test/animation_spec.rb
395
417
  - test/email_spec.rb
396
418
  - test/minifier_spec.rb
397
419
  - test/parser_spec.rb
@@ -408,12 +430,17 @@ files:
408
430
  - test/renderer/link_spec.rb
409
431
  - test/renderer/lorem_spec.rb
410
432
  - test/renderer/mobile_image_spec.rb
433
+ - test/renderer/mobile_only_spec.rb
411
434
  - test/renderer/mobile_style_spec.rb
435
+ - test/renderer/outlook_background_spec.rb
412
436
  - test/renderer/redacted_spec.rb
437
+ - test/renderer/social_spec.rb
413
438
  - test/renderer/span_spec.rb
414
439
  - test/renderer/table_spec.rb
415
440
  - test/renderer/td_spec.rb
441
+ - test/renderer/video_preview_spec.rb
416
442
  - test/renderer_spec.rb
443
+ - test/test_helper.rb
417
444
  - test/view_spec.rb
418
445
  homepage: https://github.com/inkceptional/inkcite
419
446
  licenses:
@@ -425,21 +452,22 @@ require_paths:
425
452
  - lib
426
453
  required_ruby_version: !ruby/object:Gem::Requirement
427
454
  requirements:
428
- - - '>='
455
+ - - ">="
429
456
  - !ruby/object:Gem::Version
430
457
  version: '0'
431
458
  required_rubygems_version: !ruby/object:Gem::Requirement
432
459
  requirements:
433
- - - '>='
460
+ - - ">="
434
461
  - !ruby/object:Gem::Version
435
462
  version: '0'
436
463
  requirements: []
437
464
  rubyforge_project:
438
- rubygems_version: 2.4.3
465
+ rubygems_version: 2.6.8
439
466
  signing_key:
440
467
  specification_version: 4
441
468
  summary: Simplifying email development
442
469
  test_files:
470
+ - test/animation_spec.rb
443
471
  - test/email_spec.rb
444
472
  - test/minifier_spec.rb
445
473
  - test/parser_spec.rb
@@ -456,10 +484,15 @@ test_files:
456
484
  - test/renderer/link_spec.rb
457
485
  - test/renderer/lorem_spec.rb
458
486
  - test/renderer/mobile_image_spec.rb
487
+ - test/renderer/mobile_only_spec.rb
459
488
  - test/renderer/mobile_style_spec.rb
489
+ - test/renderer/outlook_background_spec.rb
460
490
  - test/renderer/redacted_spec.rb
491
+ - test/renderer/social_spec.rb
461
492
  - test/renderer/span_spec.rb
462
493
  - test/renderer/table_spec.rb
463
494
  - test/renderer/td_spec.rb
495
+ - test/renderer/video_preview_spec.rb
464
496
  - test/renderer_spec.rb
497
+ - test/test_helper.rb
465
498
  - test/view_spec.rb