mjml 0.0.3 → 0.0.4

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
  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