mjml 0.0.3 → 0.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 074c6418fb34a7c3136bd5993784e6da2c3f63cc
4
- data.tar.gz: 3767d0b093a9363680ee3308b218f8f3fea82a06
3
+ metadata.gz: 58c530e15903cfef6a41754880409a7adad3a3e0
4
+ data.tar.gz: 6985b4528de6935bf2947f2cf9cdba91ca82b72a
5
5
  SHA512:
6
- metadata.gz: 5c96c033e12d07ec3114788249baa853b2df5b97411c138777b36489a190aac2f23983282a83f669908d7a1b9c2347141539abe25da7597804a8c1af2d27855f
7
- data.tar.gz: 1e648f5649e72e8f57afb1d985ba029ed3ed292690fd3edc4f0203f9794004651053ed3e05d43b5332d077f76c1ece9aa25d8de995587070efa74bd696475a91
6
+ metadata.gz: f689b6a2f98a7ca1762e23fe85cda2624b513f12d40a6f0b8fe913d67c80d9f0e0c9f3ad19544912cfaded2cd8aa9639421566665b61b3e5cb279d86cef14633
7
+ data.tar.gz: 67de90735d5116071069d340854248aa6e9d729e9a973a2112dabb3ed53555ed94e571f079eb13afa13140d4e8f1f0c2b06ecc0357808c6abe9a4aed1aa19f84
data/README.md CHANGED
@@ -65,6 +65,16 @@ and `template.mjml`
65
65
  </mjml>
66
66
  ```
67
67
 
68
+ To support render partial inside template, you have to add this into your mime types
69
+ ```ruby
70
+ Mime::Type.register_alias "text/plain", :mjml
71
+ ```
72
+
73
+ and you can use in `template.mjml`
74
+ ```ruby
75
+ <%= render partial: 'xxxx', formats: [:mjml] %>
76
+ ```
77
+
68
78
  ## Development
69
79
 
70
80
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/lib/mjml.rb CHANGED
@@ -1,13 +1,23 @@
1
1
  require 'erb'
2
+ require 'tilt'
2
3
  require 'securerandom'
3
4
 
4
5
  require "mjml/version"
6
+ require "mjml/mailer"
7
+ require "mjml/scope"
5
8
  require "mjml/render"
6
9
  require "mjml/config"
7
10
 
8
11
  module Mjml
9
- def self.render(path, args, instance = nil)
10
- Render.new(path, args, instance).execute
12
+ def self.render(path, args = {}, instance = nil, &block)
13
+ scope = Scope.new(instance, args)
14
+ Render.new(path, scope, block).execute
15
+ end
16
+
17
+ def self.template(template_mjml)
18
+ mjml_path = "#{Dir.pwd}/tmp/template-#{SecureRandom.uuid}.mjml"
19
+ File.write(mjml_path, template_mjml)
20
+ render(mjml_path)
11
21
  end
12
22
 
13
23
  def self.configure
@@ -0,0 +1,24 @@
1
+ module Mjml
2
+ module Mailer
3
+ def mail(headers, &block)
4
+ scope = Mjml::Scope.new(self, headers[:template_variables])
5
+ content = _layout ? mjml_layout_content(headers, scope) : mjml_template_content(headers, scope)
6
+
7
+ headers[:body] = Mjml.template(content)
8
+ headers[:content_type] = "text/html"
9
+
10
+ super(headers, &block)
11
+ end
12
+
13
+ def mjml_layout_content(headers, scope)
14
+ erb_layout = Tilt::ERBTemplate.new("#{Dir.pwd}/app/views/layouts/#{_layout}.mjml")
15
+ erb_template = Tilt::ERBTemplate.new("#{headers[:template_path]}/#{headers[:template_name]}.mjml")
16
+ erb_layout.render(scope) { erb_template.render(scope) }
17
+ end
18
+
19
+ def mjml_template_content(headers, scope)
20
+ erb_template = Tilt::ERBTemplate.new("#{headers[:template_path]}/#{headers[:template_name]}.mjml")
21
+ erb_template.render(scope)
22
+ end
23
+ end
24
+ end
data/lib/mjml/render.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  module Mjml
2
2
  class Render
3
- attr_accessor :path, :args, :content, :instance
3
+ attr_accessor :path, :scope, :content, :block
4
4
 
5
- def initialize(path, args, instance)
5
+ def initialize(path, scope, block)
6
6
  @path = path
7
- @args = args
8
- @instance = instance || binding
7
+ @scope = scope
8
+ @block = block
9
9
  end
10
10
 
11
11
  def execute
@@ -43,14 +43,10 @@ module Mjml
43
43
  @html_path ||= "#{Dir.pwd}/tmp/template-#{SecureRandom.uuid}.html"
44
44
  end
45
45
 
46
- def template_variables
47
- @template_variables ||= args.inject(instance) { |b, item| b.local_variable_set(item[0], item[1]) and b }
48
- end
49
-
50
46
  def template_mjml
51
47
  @template_mjml ||= lambda do
52
- template_erb = File.open(path).read
53
- ERB.new(template_erb).result(template_variables)
48
+ erb = Tilt::ERBTemplate.new(path)
49
+ erb.render(scope) { block&.call }
54
50
  end.call
55
51
  end
56
52
  end
data/lib/mjml/scope.rb ADDED
@@ -0,0 +1,12 @@
1
+ module Mjml
2
+ class Scope < SimpleDelegator
3
+
4
+ def initialize(target, args)
5
+ super(target)
6
+
7
+ args.each do |key, value|
8
+ define_singleton_method key, lambda { value }
9
+ end
10
+ end
11
+ end
12
+ end
data/lib/mjml/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mjml
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/mjml.gemspec CHANGED
@@ -21,4 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.11"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
+
25
+ spec.add_dependency "tilt", '>= 1.0.0'
24
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mjml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - MQuy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-01 00:00:00.000000000 Z
11
+ date: 2016-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: tilt
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 1.0.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 1.0.0
55
69
  description: Template engine for mjml. It help user reduce when writing email template.
56
70
  email:
57
71
  - sugiacupit@gmail.com
@@ -70,7 +84,9 @@ files:
70
84
  - bin/setup
71
85
  - lib/mjml.rb
72
86
  - lib/mjml/config.rb
87
+ - lib/mjml/mailer.rb
73
88
  - lib/mjml/render.rb
89
+ - lib/mjml/scope.rb
74
90
  - lib/mjml/version.rb
75
91
  - mjml.gemspec
76
92
  homepage: https://MQuy.github.io