mjml-ruby 0.3.0 → 0.3.1

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mjml/parser.rb +40 -13
  3. data/lib/mjml/version.rb +1 -1
  4. metadata +27 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9553ab9e944060cd775079a86da250cc18f98bd3
4
- data.tar.gz: 96f986df41ab14afeaeff452735977e11bc98322
3
+ metadata.gz: 9ba7fc3cc0aabe383a5e0bc9ab26d0db578c6be4
4
+ data.tar.gz: 5abe4f8865c359ca7d48b8358a2d8e00072821c7
5
5
  SHA512:
6
- metadata.gz: 86bfb367a7237eb0487aa14abdde30564af54c4ff320d15c5b1b27b98f5414f9976ce7ec46b3e20a0c4d8e07ad40d0b067309f9df099c338ce7e782c5ca9aee9
7
- data.tar.gz: 2077acd4e9ec468ee1367e9e17f7dc73f4a4342bcf8bbce8621796873b80b34b49dd6d69de640099da6fee69c7a40fe4da512678ef8c00ecccded2090e0648c4
6
+ metadata.gz: e2e18a0b5b5c60a54852298608f526df2e33bf1b2f353367ce579f79b2294624092bc7c51484a0f674d92d5d8d8a6a21b3c32fbc51ecaadde6c4f130b1a65580
7
+ data.tar.gz: b986c40bb3e890375ddcbaa62d6d5a745b127635b0d19cc19dbb7329a6315a2ca0ed2073506cd58fe774395f3f571b82321feb7141f7de274659799a6eb6deb0
@@ -15,25 +15,27 @@ module MJML
15
15
  end
16
16
 
17
17
  def call(template)
18
- exec!(template)
18
+ @template = template
19
+ exec!
19
20
  rescue InvalidTemplate
20
21
  nil
21
22
  end
22
23
 
23
24
  def call!(template)
24
- exec!(template)
25
+ @template = template
26
+ exec!
25
27
  end
26
28
 
27
29
  private
28
30
 
29
- def exec!(template)
30
- MJML.logger.debug("Template:\n #{template}")
31
- raise InvalidTemplate if template.empty?
31
+ def exec!
32
+ MJML.logger.debug("Template:\n #{@template}")
33
+ raise InvalidTemplate if @template.empty?
32
34
 
33
- MJML.logger.debug("Partial: #{partial?(template)}")
34
- return template if partial?(template)
35
+ MJML.logger.debug("Partial: #{partial?}")
36
+ return @template if partial?
35
37
 
36
- out, err, _sts = Open3.capture3(cmd, stdin_data: template)
38
+ out, err = should_get_outpout_from_file? ? output_from_file : output_from_memory
37
39
  parsed = parse_output(out)
38
40
 
39
41
  MJML.logger.debug("Output:\n #{parsed[:output]}")
@@ -44,16 +46,24 @@ module MJML
44
46
  parsed[:output]
45
47
  end
46
48
 
47
- def partial?(template)
48
- (template =~ ROOT_TAGS_REGEX).nil?
49
+ def partial?
50
+ (@template =~ ROOT_TAGS_REGEX).nil?
49
51
  end
50
52
 
51
53
  def mjml_bin
52
54
  MJML.config.bin_path
53
55
  end
54
56
 
55
- def cmd
56
- "#{mjml_bin} #{minify_output} #{validation_level} -is"
57
+ def cmd(file_path = nil)
58
+ "#{mjml_bin} #{minify_output} #{validation_level} #{cmd_options}"
59
+ end
60
+
61
+ def cmd_options
62
+ if should_get_outpout_from_file?
63
+ "-i -o #{@temp_file.path}"
64
+ else
65
+ "-is"
66
+ end
57
67
  end
58
68
 
59
69
  def minify_output
@@ -64,11 +74,28 @@ module MJML
64
74
  "--level=#{MJML.config.validation_level}" if MJML::Feature.available?(:validation_level)
65
75
  end
66
76
 
77
+ def output_from_file
78
+ @temp_file = Tempfile.new("mjml-template")
79
+ _out, err, _sts = Open3.capture3(cmd, stdin_data: @template)
80
+ @temp_file.rewind
81
+ @temp_file.unlink
82
+ return @temp_file.read, err
83
+ end
84
+
85
+ def output_from_memory
86
+ out, err, _sts = Open3.capture3(cmd, stdin_data: @template)
87
+ return out, err
88
+ end
89
+
90
+ def should_get_outpout_from_file?
91
+ @template.size > 20_000
92
+ end
93
+
67
94
  def parse_output(out)
68
95
  warnings = []
69
96
  output = []
70
97
 
71
- out.lines.each do |l|
98
+ out.lines.each do |l|
72
99
  if l.strip.start_with?('Line')
73
100
  warnings << l
74
101
  else
@@ -1,3 +1,3 @@
1
1
  module MJML
2
- VERSION = '0.3.0'.freeze
2
+ VERSION = '0.3.1'.freeze
3
3
  end
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.3.0
4
+ version: 0.3.1
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-10-30 00:00:00.000000000 Z
11
+ date: 2017-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-configurable
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.3.0
19
+ version: '0.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.1.3
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: 0.3.0
29
+ version: '0.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.1.3
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rake
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -44,80 +50,80 @@ dependencies:
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: 5.9.0
53
+ version: '5.9'
48
54
  - - ">="
49
55
  - !ruby/object:Gem::Version
50
- version: 5.0.0
56
+ version: '5.0'
51
57
  type: :development
52
58
  prerelease: false
53
59
  version_requirements: !ruby/object:Gem::Requirement
54
60
  requirements:
55
61
  - - "~>"
56
62
  - !ruby/object:Gem::Version
57
- version: 5.9.0
63
+ version: '5.9'
58
64
  - - ">="
59
65
  - !ruby/object:Gem::Version
60
- version: 5.0.0
66
+ version: '5.0'
61
67
  - !ruby/object:Gem::Dependency
62
68
  name: tilt
63
69
  requirement: !ruby/object:Gem::Requirement
64
70
  requirements:
65
71
  - - "~>"
66
72
  - !ruby/object:Gem::Version
67
- version: 2.0.0
73
+ version: '2.0'
68
74
  - - ">="
69
75
  - !ruby/object:Gem::Version
70
- version: 2.0.0
76
+ version: '2.0'
71
77
  type: :development
72
78
  prerelease: false
73
79
  version_requirements: !ruby/object:Gem::Requirement
74
80
  requirements:
75
81
  - - "~>"
76
82
  - !ruby/object:Gem::Version
77
- version: 2.0.0
83
+ version: '2.0'
78
84
  - - ">="
79
85
  - !ruby/object:Gem::Version
80
- version: 2.0.0
86
+ version: '2.0'
81
87
  - !ruby/object:Gem::Dependency
82
88
  name: sprockets
83
89
  requirement: !ruby/object:Gem::Requirement
84
90
  requirements:
85
91
  - - "~>"
86
92
  - !ruby/object:Gem::Version
87
- version: 3.7.0
93
+ version: '3.7'
88
94
  - - ">="
89
95
  - !ruby/object:Gem::Version
90
- version: 3.0.0
96
+ version: '3.0'
91
97
  type: :development
92
98
  prerelease: false
93
99
  version_requirements: !ruby/object:Gem::Requirement
94
100
  requirements:
95
101
  - - "~>"
96
102
  - !ruby/object:Gem::Version
97
- version: 3.7.0
103
+ version: '3.7'
98
104
  - - ">="
99
105
  - !ruby/object:Gem::Version
100
- version: 3.0.0
106
+ version: '3.0'
101
107
  - !ruby/object:Gem::Dependency
102
108
  name: byebug
103
109
  requirement: !ruby/object:Gem::Requirement
104
110
  requirements:
105
111
  - - "~>"
106
112
  - !ruby/object:Gem::Version
107
- version: 9.0.0
113
+ version: '9.0'
108
114
  - - ">="
109
115
  - !ruby/object:Gem::Version
110
- version: 9.0.0
116
+ version: '9.0'
111
117
  type: :development
112
118
  prerelease: false
113
119
  version_requirements: !ruby/object:Gem::Requirement
114
120
  requirements:
115
121
  - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: 9.0.0
123
+ version: '9.0'
118
124
  - - ">="
119
125
  - !ruby/object:Gem::Version
120
- version: 9.0.0
126
+ version: '9.0'
121
127
  description:
122
128
  email:
123
129
  - kolybasov@gmail.com
@@ -154,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
160
  version: '0'
155
161
  requirements: []
156
162
  rubyforge_project:
157
- rubygems_version: 2.6.7
163
+ rubygems_version: 2.6.11
158
164
  signing_key:
159
165
  specification_version: 4
160
166
  summary: MJML parser and template engine for Ruby