bootstrap-email 1.0.0.alpha1.2 → 1.0.0.alpha4
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/VERSION +1 -1
- data/core/bootstrap-email.scss +2 -0
- data/core/bootstrap-head.scss +89 -16
- data/core/scss/_selectors_for_utils.scss +24 -0
- data/core/scss/_utilities.scss +24 -4
- data/core/scss/components/_grid.scss +25 -17
- data/core/scss/components/_stack.scss +39 -0
- data/core/scss/utilities/_sizing.scss +21 -2
- data/core/scss/utilities/_typography.scss +4 -10
- data/core/scss/utilities/_valign.scss +5 -0
- data/core/templates/body.html +9 -0
- data/core/templates/{container.html.erb → container.html} +4 -4
- data/core/templates/div.html +3 -0
- data/core/templates/table-left.html +9 -0
- data/core/templates/table-to-tbody.html +5 -0
- data/core/templates/table-to-tr.html +7 -0
- data/core/templates/table.html +9 -0
- data/core/templates/td.html +3 -0
- data/core/templates/tr.html +5 -0
- data/lib/{bootstrap_email.rb → bootstrap-email.rb} +6 -3
- data/lib/bootstrap-email/bootstrap_email_cli.rb +6 -7
- data/lib/bootstrap-email/compiler.rb +50 -65
- data/lib/bootstrap-email/config.rb +50 -0
- data/lib/bootstrap-email/{components → converters}/alert.rb +1 -1
- data/lib/bootstrap-email/converters/align.rb +22 -0
- data/lib/bootstrap-email/{components → converters}/badge.rb +1 -1
- data/lib/bootstrap-email/converters/base.rb +63 -0
- data/lib/bootstrap-email/converters/block.rb +13 -0
- data/lib/bootstrap-email/converters/body.rb +10 -0
- data/lib/bootstrap-email/{components → converters}/button.rb +1 -1
- data/lib/bootstrap-email/{components → converters}/card.rb +3 -3
- data/lib/bootstrap-email/{components → converters}/color.rb +1 -1
- data/lib/bootstrap-email/{components → converters}/container.rb +1 -1
- data/lib/bootstrap-email/converters/force_encoding.rb +14 -0
- data/lib/bootstrap-email/converters/grid.rb +14 -0
- data/lib/bootstrap-email/converters/head_style.rb +33 -0
- data/lib/bootstrap-email/{components → converters}/hr.rb +2 -2
- data/lib/bootstrap-email/{components → converters}/margin.rb +3 -3
- data/lib/bootstrap-email/converters/padding.rb +16 -0
- data/lib/bootstrap-email/converters/paragraph.rb +13 -0
- data/lib/bootstrap-email/converters/preview_text.rb +18 -0
- data/lib/bootstrap-email/{components → converters}/spacer.rb +1 -1
- data/lib/bootstrap-email/{components → converters}/spacing.rb +5 -6
- data/lib/bootstrap-email/converters/stack.rb +30 -0
- data/lib/bootstrap-email/{components → converters}/table.rb +1 -1
- data/lib/bootstrap-email/converters/version_comment.rb +15 -0
- data/lib/bootstrap-email/erb.rb +9 -0
- data/lib/bootstrap-email/rails/action_mailer.rb +7 -2
- data/lib/bootstrap-email/sass_cache.rb +43 -26
- data/lib/bootstrap-email/setup.rb +27 -0
- metadata +44 -32
- data/core/templates/body.html.erb +0 -9
- data/core/templates/col.html.erb +0 -3
- data/core/templates/div.html.erb +0 -3
- data/core/templates/row.html.erb +0 -7
- data/core/templates/table-left.html.erb +0 -9
- data/core/templates/table.html.erb +0 -9
- data/lib/bootstrap-email/components/align.rb +0 -21
- data/lib/bootstrap-email/components/base.rb +0 -26
- data/lib/bootstrap-email/components/body.rb +0 -22
- data/lib/bootstrap-email/components/grid.rb +0 -14
- data/lib/bootstrap-email/components/padding.rb +0 -16
- data/lib/bootstrap-email/components/paragraph.rb +0 -24
- data/lib/bootstrap-email/initialize.rb +0 -1
data/core/templates/col.html.erb
DELETED
data/core/templates/div.html.erb
DELETED
data/core/templates/row.html.erb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module BootstrapEmail
|
2
|
-
module Component
|
3
|
-
class Align < Base
|
4
|
-
def build
|
5
|
-
['left', 'center', 'right'].each do |type|
|
6
|
-
each_node(".align-#{type}") do |node|
|
7
|
-
align_helper(node, type)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def align_helper(node, type)
|
13
|
-
if node.name != 'table'
|
14
|
-
node['class'] = node['class'].sub("align-#{type}", '')
|
15
|
-
node = node.replace(template('table', classes: "align-#{type}", contents: node.to_html))[0]
|
16
|
-
end
|
17
|
-
node['align'] = type
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module BootstrapEmail
|
2
|
-
module Component
|
3
|
-
class Base
|
4
|
-
attr_reader :doc
|
5
|
-
def initialize(doc)
|
6
|
-
@doc = doc
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.build(doc)
|
10
|
-
new(doc).build
|
11
|
-
end
|
12
|
-
|
13
|
-
def template(file, locals_hash = {})
|
14
|
-
locals_hash[:classes] = locals_hash[:classes].split.join(' ') if locals_hash[:classes]
|
15
|
-
namespace = OpenStruct.new(locals_hash)
|
16
|
-
template_html = File.read(File.expand_path("../../../core/templates/#{file}.html.erb", __dir__))
|
17
|
-
ERB.new(template_html).result(namespace.instance_eval { binding })
|
18
|
-
end
|
19
|
-
|
20
|
-
def each_node(css_lookup, &blk)
|
21
|
-
# sort by youngest child and traverse backwards up the tree
|
22
|
-
doc.css(css_lookup).sort_by { |n| n.ancestors.size }.reverse!.each(&blk)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module BootstrapEmail
|
2
|
-
module Component
|
3
|
-
class Body < Base
|
4
|
-
def build
|
5
|
-
each_node('body') do |node|
|
6
|
-
node.replace('<body>' + preview_text.to_s + template('body', classes: "#{node['class']} body", contents: node.inner_html) + '</body>')
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def preview_text
|
11
|
-
preview_node = doc.at_css('preview')
|
12
|
-
return if preview_node.nil?
|
13
|
-
|
14
|
-
# apply spacing after the text max of 100 characters so it doesn't show body text
|
15
|
-
preview_node.content += ' ' * [(100 - preview_node.content.length.to_i), 0].max
|
16
|
-
node = template('div', classes: 'preview', contents: preview_node.content)
|
17
|
-
preview_node.remove
|
18
|
-
node
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module BootstrapEmail
|
2
|
-
module Component
|
3
|
-
class Grid < Base
|
4
|
-
def build
|
5
|
-
each_node('.row') do |node|
|
6
|
-
node.replace(template('row', classes: node['class'], contents: node.inner_html))
|
7
|
-
end
|
8
|
-
each_node('*[class*=col]') do |node|
|
9
|
-
node.replace(template('col', classes: node['class'], contents: node.inner_html))
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module BootstrapEmail
|
2
|
-
module Component
|
3
|
-
class Padding < Base
|
4
|
-
def build
|
5
|
-
each_node('*[class*=p-], *[class*=pt-], *[class*=pr-], *[class*=pb-], *[class*=pl-], *[class*=px-], *[class*=py-]') do |node|
|
6
|
-
next if ['table', 'td', 'a'].include?(node.name)
|
7
|
-
|
8
|
-
padding_regex = /(p[trblxy]?-\d+)/
|
9
|
-
classes = node['class'].scan(padding_regex).join(' ')
|
10
|
-
node['class'] = node['class'].gsub(padding_regex, '')
|
11
|
-
node.replace(template('table', classes: classes, contents: node.to_html))
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module BootstrapEmail
|
2
|
-
module Component
|
3
|
-
class Paragraph < Base
|
4
|
-
def build
|
5
|
-
each_node('p') do |node|
|
6
|
-
next if margin?(node) || space_y?(node)
|
7
|
-
|
8
|
-
node['class'] ||= ''
|
9
|
-
node['class'] += 'mb-4'
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def margin?(node)
|
16
|
-
node['class'].to_s.match?(/m[tby]{1}-(lg-)?\d+/)
|
17
|
-
end
|
18
|
-
|
19
|
-
def space_y?(node)
|
20
|
-
node.parent['class'].to_s.match?(/space-y-(lg-)?\d+/)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
Premailer::Adapter.use = :nokogiri_fast
|