bootstrap-email 0.3.1 → 0.3.2

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: 9fcc5b1fd5cf92ac2134a4f77cb9a7535f7b9fcf1aa7032c31a0f81af6284447
4
- data.tar.gz: ed93116fe4586fba4610913b9e87404fc619d5c2dde94cafce91de86ba7d7dbc
3
+ metadata.gz: 62c6c5c793d4efc84cce78d500c28962ed044dcb2ee4cfa340ac366711d78275
4
+ data.tar.gz: 591fe6126e0b9029ba96fa8d6c00ce99dae098a08a590d70f8aed75893dde83d
5
5
  SHA512:
6
- metadata.gz: fbcafed297522bd63d36f94eac04c09250fdb37f8bdee49e5291cb09350d09b8af48e361ca734e5e55a4949f403d8d159bcededf1b96a6f21b078ab2db77ff73
7
- data.tar.gz: 7cbd0af02a0d928e49b0e570f0dad0685b43cd06dc648f4cb59a484e3b0e0f9e91dcded1cb7c8aef58524f26c1075b58c256ace5cd3fd9d21f8820dac34075e1
6
+ metadata.gz: '048c1bb0ed2d42b612e4fa052e6dc8f0872cb474aaa06664b6b3030f07f226d572213de43b459575ffca84d5ec75936c0341fbaa59a6fa47e9b490a47ff6c750'
7
+ data.tar.gz: 14ab4f2fe71b5966e39dedc63283851b9d9650f7a2bbebe3cf2ac30e69e2ca59465101c4536935f1e77e08e285df70d1c94e9338bb1404dbce4545e40a3113c3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.3.2
@@ -8,13 +8,13 @@ require 'rails'
8
8
 
9
9
  module BootstrapEmail
10
10
  class Compiler
11
- def initialize mail
11
+ def initialize(mail)
12
12
  @mail = mail
13
13
  @source = mail.html_part || mail
14
14
  update_doc(@source.body.raw_source)
15
15
  end
16
16
 
17
- def update_doc source
17
+ def update_doc(source)
18
18
  @doc = Nokogiri::HTML(source)
19
19
  end
20
20
 
@@ -63,21 +63,21 @@ module BootstrapEmail
63
63
  engine = defined?(SassC::Engine).nil? ? Sass::Engine : SassC::Engine
64
64
  html_string = <<-HEREDOC
65
65
  <style type="text/css">
66
- #{engine.new(File.open(File.expand_path('../core/head.scss', __dir__)).read, {syntax: :scss, style: :compressed, cache: false, read_cache: false}).render}
66
+ #{engine.new(File.open(File.expand_path('../core/head.scss', __dir__)).read, syntax: :scss, style: :compressed, cache: false, read_cache: false).render}
67
67
  </style>
68
68
  HEREDOC
69
69
  html_string
70
70
  end
71
71
 
72
- def template file, locals_hash = {}
72
+ def template(file, locals_hash = {})
73
73
  namespace = OpenStruct.new(locals_hash)
74
74
  template_html = File.open(File.expand_path("../core/templates/#{file}.html.erb", __dir__)).read
75
75
  ERB.new(template_html).result(namespace.instance_eval { binding })
76
76
  end
77
77
 
78
- def each_node css_lookup, &blk
78
+ def each_node(css_lookup, &blk)
79
79
  # sort by youngest child and traverse backwards up the tree
80
- @doc.css(css_lookup).sort_by{ |n| n.ancestors.size }.reverse!.each(&blk)
80
+ @doc.css(css_lookup).sort_by { |n| n.ancestors.size }.reverse!.each(&blk)
81
81
  end
82
82
 
83
83
  def button
@@ -110,7 +110,7 @@ module BootstrapEmail
110
110
  end
111
111
  end
112
112
 
113
- def align_helper node, klass, template
113
+ def align_helper(node, klass, template)
114
114
  if node.name != 'table' # if it is already on a table, set the proprieties on the current table
115
115
  node['class'] = node['class'].sub(klass, '')
116
116
  node.replace(template("align-#{template}", contents: node.to_html))
@@ -154,12 +154,12 @@ module BootstrapEmail
154
154
 
155
155
  def padding
156
156
  each_node('*[class*=p-], *[class*=pt-], *[class*=pr-], *[class*=pb-], *[class*=pl-], *[class*=px-], *[class*=py-]') do |node|
157
- if node.name != 'table' # if it is already on a table, set the padding on the table, else wrap the content in a table
158
- padding_regex = /(p[trblxy]?-\d)/
159
- classes = node['class'].scan(padding_regex).join(' ')
160
- node['class'] = node['class'].gsub(padding_regex, '')
161
- node.replace(template('table', classes: classes, contents: node.to_html))
162
- end
157
+ next unless node.name != 'table' # if it is already on a table, set the padding on the table, else wrap the content in a table
158
+
159
+ padding_regex = /(p[trblxy]?-\d)/
160
+ classes = node['class'].scan(padding_regex).join(' ')
161
+ node['class'] = node['class'].gsub(padding_regex, '')
162
+ node.replace(template('table', classes: classes, contents: node.to_html))
163
163
  end
164
164
  end
165
165
 
@@ -213,13 +213,13 @@ module BootstrapEmail
213
213
 
214
214
  def preview_text
215
215
  preview_node = @doc.at_css('preview')
216
- if preview_node.present?
217
- # apply spacing after the text max of 100 characters so it doesn't show body text
218
- preview_node.content += '&nbsp;' * (100 - preview_node.content.length.to_i)
219
- node = template('div', classes: 'preview', contents: preview_node.content)
220
- preview_node.remove
221
- return node
222
- end
216
+ return if preview_node.blank?
217
+
218
+ # apply spacing after the text max of 100 characters so it doesn't show body text
219
+ preview_node.content += '&nbsp;' * [(100 - preview_node.content.length.to_i), 0].max
220
+ node = template('div', classes: 'preview', contents: preview_node.content)
221
+ preview_node.remove
222
+ node
223
223
  end
224
224
  end
225
225
  end
@@ -1,11 +1,11 @@
1
1
  class ActionMailer::Base
2
2
  # sit in the middle and compile the html
3
- def bootstrap_mail *args
3
+ def bootstrap_mail(*args)
4
4
  bootstrap = BootstrapEmail::Compiler.new(mail(*args) { |format| format.html { render layout: 'layouts/bootstrap-mailer.html.erb' } })
5
5
  bootstrap.perform_full_compile
6
6
  end
7
7
 
8
- def make_bootstrap_mail *args, &block
8
+ def make_bootstrap_mail(*args, &block)
9
9
  bootstrap = BootstrapEmail::Compiler.new(mail(*args, &block))
10
10
  bootstrap.perform_full_compile
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootstrap-email
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Yamartino
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-10 00:00:00.000000000 Z
11
+ date: 2020-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionmailer
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3'
69
69
  description:
70
- email: stuartyamartino@gmail.com
70
+ email: stu@stuyam.com
71
71
  executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files: []