mjml-ruby 0.2.3 → 0.3.0
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/lib/mjml.rb +7 -2
- data/lib/mjml/feature.rb +26 -0
- data/lib/mjml/logger.rb +2 -2
- data/lib/mjml/parser.rb +34 -3
- data/lib/mjml/rails/template_handler.rb +1 -1
- data/lib/mjml/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9553ab9e944060cd775079a86da250cc18f98bd3
|
4
|
+
data.tar.gz: 96f986df41ab14afeaeff452735977e11bc98322
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86bfb367a7237eb0487aa14abdde30564af54c4ff320d15c5b1b27b98f5414f9976ce7ec46b3e20a0c4d8e07ad40d0b067309f9df099c338ce7e782c5ca9aee9
|
7
|
+
data.tar.gz: 2077acd4e9ec468ee1367e9e17f7dc73f4a4342bcf8bbce8621796873b80b34b49dd6d69de640099da6fee69c7a40fe4da512678ef8c00ecccded2090e0648c4
|
data/lib/mjml.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'dry-configurable'
|
2
2
|
require 'mjml/logger'
|
3
|
+
require 'mjml/feature'
|
3
4
|
require 'mjml/parser'
|
4
5
|
|
5
6
|
# MJML library for ruby
|
@@ -14,13 +15,17 @@ module MJML
|
|
14
15
|
setting :bin_path
|
15
16
|
setting :debug
|
16
17
|
setting :logger
|
18
|
+
setting :minify_output
|
19
|
+
setting :validation_level
|
17
20
|
|
18
21
|
def self.setup!
|
19
22
|
# Init config
|
20
23
|
configure do |config|
|
21
24
|
config.bin_path = find_executable
|
25
|
+
config.debug = nil
|
22
26
|
config.logger = Logger.setup!(STDOUT)
|
23
|
-
config.
|
27
|
+
config.minify_output = false
|
28
|
+
config.validation_level = :skip
|
24
29
|
end
|
25
30
|
end
|
26
31
|
|
@@ -35,7 +40,7 @@ module MJML
|
|
35
40
|
end
|
36
41
|
|
37
42
|
def self.extract_executable_version
|
38
|
-
ver, _status = Open3.capture2(
|
43
|
+
ver, _status = Open3.capture2(config.bin_path, '-V')
|
39
44
|
(ver =~ VERSION_REGEX).nil? ? nil : ver
|
40
45
|
end
|
41
46
|
|
data/lib/mjml/feature.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
module MJML
|
2
|
+
# Allows to check if feature is availalbe in current mjml version
|
3
|
+
class Feature
|
4
|
+
def self.version
|
5
|
+
semver = MJML.executable_version.split('.')
|
6
|
+
@version ||= Hash[
|
7
|
+
major: semver[0].to_i,
|
8
|
+
minor: semver[1].to_i,
|
9
|
+
patch: semver[2].to_i
|
10
|
+
]
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.available?(feature_name)
|
14
|
+
case feature_name
|
15
|
+
when :validation_level
|
16
|
+
version[:major] >= 3
|
17
|
+
else
|
18
|
+
false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.missing?(feature_name)
|
23
|
+
!available?(feature_name)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/mjml/logger.rb
CHANGED
@@ -5,10 +5,10 @@ module MJML
|
|
5
5
|
class Logger < ::Logger
|
6
6
|
def self.setup!(destination)
|
7
7
|
logger = new(destination)
|
8
|
-
logger.level = ::Logger::
|
8
|
+
logger.level = ::Logger::ERROR
|
9
9
|
|
10
10
|
logger.formatter = proc do |severity, datetime, _progname, msg|
|
11
|
-
"[#{datetime}] #{severity} -- MJML: #{msg}"
|
11
|
+
"[#{datetime}] #{severity} -- MJML: #{msg}\n\n"
|
12
12
|
end
|
13
13
|
|
14
14
|
logger
|
data/lib/mjml/parser.rb
CHANGED
@@ -33,11 +33,15 @@ module MJML
|
|
33
33
|
MJML.logger.debug("Partial: #{partial?(template)}")
|
34
34
|
return template if partial?(template)
|
35
35
|
|
36
|
-
out, err, _sts = Open3.capture3(
|
37
|
-
|
36
|
+
out, err, _sts = Open3.capture3(cmd, stdin_data: template)
|
37
|
+
parsed = parse_output(out)
|
38
|
+
|
39
|
+
MJML.logger.debug("Output:\n #{parsed[:output]}")
|
40
|
+
MJML.logger.error(err) unless err.empty?
|
41
|
+
MJML.logger.warn(parsed[:warnings]) unless parsed[:warnings].empty?
|
38
42
|
|
39
43
|
raise InvalidTemplate unless err.empty?
|
40
|
-
|
44
|
+
parsed[:output]
|
41
45
|
end
|
42
46
|
|
43
47
|
def partial?(template)
|
@@ -47,5 +51,32 @@ module MJML
|
|
47
51
|
def mjml_bin
|
48
52
|
MJML.config.bin_path
|
49
53
|
end
|
54
|
+
|
55
|
+
def cmd
|
56
|
+
"#{mjml_bin} #{minify_output} #{validation_level} -is"
|
57
|
+
end
|
58
|
+
|
59
|
+
def minify_output
|
60
|
+
'--min' if MJML.config.minify_output
|
61
|
+
end
|
62
|
+
|
63
|
+
def validation_level
|
64
|
+
"--level=#{MJML.config.validation_level}" if MJML::Feature.available?(:validation_level)
|
65
|
+
end
|
66
|
+
|
67
|
+
def parse_output(out)
|
68
|
+
warnings = []
|
69
|
+
output = []
|
70
|
+
|
71
|
+
out.lines.each do |l|
|
72
|
+
if l.strip.start_with?('Line')
|
73
|
+
warnings << l
|
74
|
+
else
|
75
|
+
output << l
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
{ warnings: warnings.join, output: output.join }
|
80
|
+
end
|
50
81
|
end
|
51
82
|
end
|
data/lib/mjml/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mjml-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mykola Basov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-configurable
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,6 +126,7 @@ extensions: []
|
|
126
126
|
extra_rdoc_files: []
|
127
127
|
files:
|
128
128
|
- lib/mjml.rb
|
129
|
+
- lib/mjml/feature.rb
|
129
130
|
- lib/mjml/logger.rb
|
130
131
|
- lib/mjml/parser.rb
|
131
132
|
- lib/mjml/rails/template_handler.rb
|
@@ -137,7 +138,7 @@ homepage: https://github.com/kolybasov/mjml-ruby
|
|
137
138
|
licenses:
|
138
139
|
- MIT
|
139
140
|
metadata: {}
|
140
|
-
post_install_message: Don't forget to run $ npm install -g mjml@^
|
141
|
+
post_install_message: Don't forget to run $ npm install -g mjml@^3.0
|
141
142
|
rdoc_options: []
|
142
143
|
require_paths:
|
143
144
|
- lib
|
@@ -153,9 +154,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
154
|
version: '0'
|
154
155
|
requirements: []
|
155
156
|
rubyforge_project:
|
156
|
-
rubygems_version: 2.
|
157
|
+
rubygems_version: 2.6.7
|
157
158
|
signing_key:
|
158
159
|
specification_version: 4
|
159
160
|
summary: MJML parser and template engine for Ruby
|
160
161
|
test_files: []
|
161
|
-
has_rdoc:
|