mjml-ruby 0.3.3 → 0.4.1

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: 289d3187de44cd0795351d5f91ad37c1226de1ca3b0e83b527b08ea8b5bb2dda
4
- data.tar.gz: d9f923220196f7ad9ebc23d75fcde098d745e1c638e04d20472b7776d07e547d
3
+ metadata.gz: cdd00c3aaf67c0ea113af29c2c006303f093e73e7ccd71c6ba5d7350dd118c86
4
+ data.tar.gz: 247f6acb9629a449a070f6c36dfb53ca02a62af0f888e635f45599ce8865a5ef
5
5
  SHA512:
6
- metadata.gz: 6668eb66b9297ec2284cd307fb3d91796fc52bec8b5867cf6224723ea74c776651baec101f16e709c6c2bcac559a9714e8983abefda99683ac06e51481404fcf
7
- data.tar.gz: 1c64c329942cb37e9db99a0560d38c9f028041aef6adf8bd36199bfaab46ad8c93ac4655c95cd24d701f2e3a03dd1ffa909609946cbe7bc5155eef399244e767
6
+ metadata.gz: 6c92212ba3864acb3eba46ff920217a45ad2aa3ea218e3b07c44df2b6cffa0acc1d950419415e67e1f17306911c0eafc666507c12cf13a4b0925968b9ddddaa1
7
+ data.tar.gz: 91cec12b92e26a73e2b136d44e1c2212bc3ff2c3fa05f2bfa05eeaf7ff891aeeac8464af8ec75a7ca516110db8d77558f6621665f8aef854f6c8dce6b2df287e
data/lib/mjml.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'dry-configurable'
2
1
  require 'mjml/logger'
3
2
  require 'mjml/feature'
4
3
  require 'mjml/parser'
@@ -10,32 +9,35 @@ module MJML
10
9
  # Constants
11
10
  MIME_TYPE = 'text/mjml'.freeze
12
11
  EXTENSION = '.mjml'.freeze
13
- VERSION_3_REGEX = /^(\d\.\d\.\d)/i
14
- VERSION_4_REGEX = /^mjml-cli: (\d\.\d\.\d)/i
12
+ VERSION_3_REGEX = /^(\d+\.\d+\.\d+)/i
13
+ VERSION_4_REGEX = /^mjml-cli: (\d+\.\d+\.\d+)/i
15
14
 
16
- extend Dry::Configurable
17
15
  # Available settings
18
- setting :bin_path
19
- setting :debug
20
- setting :logger
21
- setting :minify_output
22
- setting :validation_level
16
+ module Config
17
+ class << self
18
+ attr_accessor(
19
+ :bin_path,
20
+ :debug,
21
+ :logger,
22
+ :minify_output,
23
+ :validation_level
24
+ )
25
+ end
26
+ end
23
27
 
24
28
  def self.setup!
25
29
  # Init config
26
- configure do |config|
27
- config.bin_path = find_executable
28
- config.debug = nil
29
- config.logger = Logger.setup!(STDOUT)
30
- config.minify_output = false
31
- config.validation_level = :skip
32
- end
30
+ Config.bin_path = find_executable
31
+ Config.debug = nil
32
+ Config.logger = Logger.setup!(STDOUT)
33
+ Config.minify_output = false
34
+ Config.validation_level = :skip
33
35
  end
34
36
 
35
37
  def self.find_executable
36
38
  local_path = File.expand_path('node_modules/.bin/mjml', Dir.pwd)
37
39
  return local_path if File.file?(local_path)
38
- `/usr/bin/env bash -c "which mjml"`.strip
40
+ `/usr/bin/env which mjml`.strip
39
41
  end
40
42
 
41
43
  def self.executable_version
@@ -43,7 +45,7 @@ module MJML
43
45
  end
44
46
 
45
47
  def self.extract_executable_version
46
- ver, _status = Open3.capture2(config.bin_path, '-V')
48
+ ver, _status = Open3.capture2(Config.bin_path, '--version')
47
49
 
48
50
  # mjml 3.x outputs version directly:
49
51
  # 3.3.5
@@ -65,15 +67,16 @@ module MJML
65
67
 
66
68
  match.nil? ? nil : match[1]
67
69
  rescue Errno::ENOENT => _e
68
- raise BinaryNotFound, "mjml binary not found for path '#{config.bin_path}'"
70
+ raise BinaryNotFound, "mjml binary not found for path '#{Config.bin_path}'"
69
71
  end
70
72
 
71
73
  def self.logger
72
- config.logger
74
+ Config.logger
73
75
  end
74
76
  end
75
77
 
76
- MJML.setup!
78
+ # Let Rails take care of the initialization...
79
+ MJML.setup! unless defined?(Rails)
77
80
 
78
81
  require 'tilt/mjml' if defined?(Tilt)
79
82
  require 'sprockets/mjml' if defined?(Sprockets)
data/lib/mjml/parser.rb CHANGED
@@ -6,17 +6,14 @@ module MJML
6
6
  class InvalidTemplate < StandardError; end
7
7
  class ExecutableNotFound < StandardError; end
8
8
 
9
- ROOT_TAGS_REGEX = %r{<mjml>.*<\/mjml>}im
9
+ ROOT_TAGS_REGEX = %r{<mjml.*>.*<\/mjml>}im
10
10
 
11
11
  def initialize
12
- MJML.logger.debug("Path: #{mjml_bin};" \
13
- "Version: #{MJML.executable_version}")
14
12
  raise ExecutableNotFound if MJML.executable_version.nil?
15
13
  end
16
14
 
17
15
  def call(template)
18
- @template = template
19
- exec!
16
+ call!(template)
20
17
  rescue InvalidTemplate
21
18
  nil
22
19
  end
@@ -29,20 +26,21 @@ module MJML
29
26
  private
30
27
 
31
28
  def exec!
32
- MJML.logger.debug("Template:\n #{@template}")
33
29
  raise InvalidTemplate if @template.empty?
34
30
 
35
- MJML.logger.debug("Partial: #{partial?}")
36
31
  return @template if partial?
37
32
 
38
33
  out, err = should_get_outpout_from_file? ? output_from_file : output_from_memory
39
34
  parsed = parse_output(out)
40
35
 
41
- MJML.logger.debug("Output:\n #{parsed[:output]}")
42
36
  MJML.logger.error(err) unless err.empty?
43
37
  MJML.logger.warn(parsed[:warnings]) unless parsed[:warnings].empty?
44
38
 
45
- raise InvalidTemplate unless err.empty?
39
+ unless err.empty?
40
+ message = [err, parsed[:warnings]].reject(&:empty?).join("\n")
41
+ raise InvalidTemplate.new(message)
42
+ end
43
+
46
44
  parsed[:output]
47
45
  end
48
46
 
@@ -51,7 +49,7 @@ module MJML
51
49
  end
52
50
 
53
51
  def mjml_bin
54
- MJML.config.bin_path
52
+ MJML::Config.bin_path
55
53
  end
56
54
 
57
55
  def cmd(file_path = nil)
@@ -67,11 +65,11 @@ module MJML
67
65
  end
68
66
 
69
67
  def minify_output
70
- '--min' if MJML.config.minify_output
68
+ '--min' if MJML::Config.minify_output
71
69
  end
72
70
 
73
71
  def validation_level
74
- "--level=#{MJML.config.validation_level}" if MJML::Feature.available?(:validation_level)
72
+ "--level=#{MJML::Config.validation_level}" if MJML::Feature.available?(:validation_level)
75
73
  end
76
74
 
77
75
  def output_from_file
@@ -103,7 +101,7 @@ module MJML
103
101
  end
104
102
  end
105
103
 
106
- { warnings: warnings.join, output: output.join }
104
+ { warnings: warnings.join("\n"), output: output.join }
107
105
  end
108
106
  end
109
107
  end
@@ -9,8 +9,8 @@ module MJML
9
9
  @base_handler = base_handler
10
10
  end
11
11
 
12
- def call(template)
13
- compiled = get_handler(@base_handler).call(template)
12
+ def call(template, source=nil)
13
+ compiled = get_handler(@base_handler).call(template, source)
14
14
  "::MJML::Parser.new.call!(begin;#{compiled};end).html_safe"
15
15
  end
16
16
 
data/lib/mjml/railtie.rb CHANGED
@@ -7,10 +7,12 @@ module MJML
7
7
  # Rails plugin for MJML ruby
8
8
  class Railtie < ::Rails::Railtie
9
9
  # Config
10
- config.mjml = MJML.config
10
+ config.mjml = MJML::Config
11
11
 
12
12
  # Initializers
13
13
  initializer 'mjml.register_extension' do
14
+ MJML.setup!
15
+
14
16
  unless Mime::Type.lookup ::MJML::MIME_TYPE
15
17
  Mime::Type.register ::MJML::MIME_TYPE, :mjml
16
18
  end
data/lib/mjml/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module MJML
2
- VERSION = '0.3.3'.freeze
2
+ VERSION = '0.4.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,37 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mjml-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mykola Basov
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-15 00:00:00.000000000 Z
11
+ date: 2021-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: dry-configurable
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.1'
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
20
24
  - - ">="
21
25
  - !ruby/object:Gem::Version
22
- version: 0.1.3
23
- type: :runtime
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: railties
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '6'
34
+ type: :development
24
35
  prerelease: false
25
36
  version_requirements: !ruby/object:Gem::Requirement
26
37
  requirements:
27
38
  - - "~>"
28
39
  - !ruby/object:Gem::Version
29
- version: '0.1'
30
- - - ">="
40
+ version: '6'
41
+ - !ruby/object:Gem::Dependency
42
+ name: actionmailer
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
31
53
  - !ruby/object:Gem::Version
32
- version: 0.1.3
54
+ version: '6'
33
55
  - !ruby/object:Gem::Dependency
34
- name: rake
56
+ name: tzinfo-data
35
57
  requirement: !ruby/object:Gem::Requirement
36
58
  requirements:
37
59
  - - ">="
@@ -48,83 +70,83 @@ dependencies:
48
70
  name: minitest
49
71
  requirement: !ruby/object:Gem::Requirement
50
72
  requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '5.0'
54
73
  - - "~>"
55
74
  - !ruby/object:Gem::Version
56
75
  version: '5.9'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '5.0'
57
79
  type: :development
58
80
  prerelease: false
59
81
  version_requirements: !ruby/object:Gem::Requirement
60
82
  requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: '5.0'
64
83
  - - "~>"
65
84
  - !ruby/object:Gem::Version
66
85
  version: '5.9'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '5.0'
67
89
  - !ruby/object:Gem::Dependency
68
90
  name: tilt
69
91
  requirement: !ruby/object:Gem::Requirement
70
92
  requirements:
71
- - - ">="
93
+ - - "~>"
72
94
  - !ruby/object:Gem::Version
73
95
  version: '2.0'
74
- - - "~>"
96
+ - - ">="
75
97
  - !ruby/object:Gem::Version
76
98
  version: '2.0'
77
99
  type: :development
78
100
  prerelease: false
79
101
  version_requirements: !ruby/object:Gem::Requirement
80
102
  requirements:
81
- - - ">="
103
+ - - "~>"
82
104
  - !ruby/object:Gem::Version
83
105
  version: '2.0'
84
- - - "~>"
106
+ - - ">="
85
107
  - !ruby/object:Gem::Version
86
108
  version: '2.0'
87
109
  - !ruby/object:Gem::Dependency
88
110
  name: sprockets
89
111
  requirement: !ruby/object:Gem::Requirement
90
112
  requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: '3.0'
94
113
  - - "~>"
95
114
  - !ruby/object:Gem::Version
96
115
  version: '3.7'
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '3.0'
97
119
  type: :development
98
120
  prerelease: false
99
121
  version_requirements: !ruby/object:Gem::Requirement
100
122
  requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '3.0'
104
123
  - - "~>"
105
124
  - !ruby/object:Gem::Version
106
125
  version: '3.7'
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '3.0'
107
129
  - !ruby/object:Gem::Dependency
108
130
  name: byebug
109
131
  requirement: !ruby/object:Gem::Requirement
110
132
  requirements:
111
- - - ">="
133
+ - - "~>"
112
134
  - !ruby/object:Gem::Version
113
135
  version: '9.0'
114
- - - "~>"
136
+ - - ">="
115
137
  - !ruby/object:Gem::Version
116
138
  version: '9.0'
117
139
  type: :development
118
140
  prerelease: false
119
141
  version_requirements: !ruby/object:Gem::Requirement
120
142
  requirements:
121
- - - ">="
143
+ - - "~>"
122
144
  - !ruby/object:Gem::Version
123
145
  version: '9.0'
124
- - - "~>"
146
+ - - ">="
125
147
  - !ruby/object:Gem::Version
126
148
  version: '9.0'
127
- description:
149
+ description:
128
150
  email:
129
151
  - kolybasov@gmail.com
130
152
  executables: []
@@ -144,7 +166,7 @@ homepage: https://github.com/kolybasov/mjml-ruby
144
166
  licenses:
145
167
  - MIT
146
168
  metadata: {}
147
- post_install_message: Don't forget to run $ npm install -g mjml@^3.0
169
+ post_install_message:
148
170
  rdoc_options: []
149
171
  require_paths:
150
172
  - lib
@@ -159,8 +181,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
181
  - !ruby/object:Gem::Version
160
182
  version: '0'
161
183
  requirements: []
162
- rubygems_version: 3.0.3
163
- signing_key:
184
+ rubygems_version: 3.2.15
185
+ signing_key:
164
186
  specification_version: 4
165
187
  summary: MJML parser and template engine for Ruby
166
188
  test_files: []