mrml 1.6.2 → 1.8.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/README.md +11 -12
- data/ext/mrml/Cargo.toml +2 -2
- data/ext/mrml/src/lib.rs +12 -11
- data/lib/mrml/version.rb +1 -1
- metadata +4 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5fa008f9c657bafdac3c988a3ca328e89d7af56c1c21e54ff380a8bb5e4ddf3
|
4
|
+
data.tar.gz: ea0775c853542de0f6ab27f258b1a161a32bc3082767e5631341163706653e3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 158e81d5fb61e5b6d948f07d028c7a70a335a1c3d6d56f299abf65a88824770bf020cf29c7420c7310e0d33680cbb7aa0b98d063da357ccf6da86aac3511e06e
|
7
|
+
data.tar.gz: 2d5ca010b5d09c9e156da2aeb32711716120f20f71f69864f3cce5ae598a1e33334e9b99f9245f088b2e3c6622ab1acf034b7aa4439698618aceda3145b20f33
|
data/README.md
CHANGED
@@ -4,7 +4,6 @@ Ruby wrapper for [MRML](https://github.com/jdrouet/mrml), the [MJML](https://mjm
|
|
4
4
|
|
5
5
|
[](https://badge.fury.io/rb/mrml)
|
6
6
|
[](https://github.com/hardpixel/mrml-ruby/actions/workflows/build.yml)
|
7
|
-
[](https://codeclimate.com/github/hardpixel/mrml-ruby/maintainability)
|
8
7
|
|
9
8
|
## Installation
|
10
9
|
|
@@ -109,27 +108,27 @@ template.to_hash # Render as hash
|
|
109
108
|
|
110
109
|
```
|
111
110
|
Warming up --------------------------------------
|
112
|
-
mrml 3.
|
111
|
+
mrml 3.071k i/100ms
|
113
112
|
mjml 1.000 i/100ms
|
114
113
|
Calculating -------------------------------------
|
115
|
-
mrml
|
116
|
-
mjml 1.
|
114
|
+
mrml 40.927k (±14.2%) i/s ( 24.43 μs/i) - 199.615k in 5.058805s
|
115
|
+
mjml 1.774 (± 0.0%) i/s (563.81 ms/i) - 9.000 in 5.085477s
|
117
116
|
|
118
117
|
Comparison:
|
119
|
-
mrml:
|
120
|
-
mjml: 1.
|
118
|
+
mrml: 40927.2 i/s
|
119
|
+
mjml: 1.8 i/s - 23075.08x slower
|
121
120
|
|
122
121
|
Calculating -------------------------------------
|
123
|
-
mrml 3.
|
122
|
+
mrml 3.109k memsize ( 0.000 retained)
|
124
123
|
2.000 objects ( 0.000 retained)
|
125
124
|
1.000 strings ( 0.000 retained)
|
126
|
-
mjml
|
127
|
-
|
128
|
-
|
125
|
+
mjml 24.183k memsize ( 40.000 retained)
|
126
|
+
110.000 objects ( 1.000 retained)
|
127
|
+
28.000 strings ( 1.000 retained)
|
129
128
|
|
130
129
|
Comparison:
|
131
|
-
mrml:
|
132
|
-
mjml:
|
130
|
+
mrml: 3109 allocated
|
131
|
+
mjml: 24183 allocated - 7.78x more
|
133
132
|
```
|
134
133
|
|
135
134
|
## Development
|
data/ext/mrml/Cargo.toml
CHANGED
data/ext/mrml/src/lib.rs
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
use magnus::{
|
2
|
-
|
3
|
-
prelude::*, gc::register_mark_object, memoize,
|
2
|
+
function, method, prelude::*, value::Lazy, Ruby,
|
4
3
|
Error, ExceptionClass, RModule
|
5
4
|
};
|
6
5
|
|
@@ -8,12 +7,14 @@ use mrml::mjml::Mjml;
|
|
8
7
|
use mrml::prelude::print::Printable;
|
9
8
|
use mrml::prelude::render::RenderOptions;
|
10
9
|
|
10
|
+
static MODULE: Lazy<RModule> =
|
11
|
+
Lazy::new(|ruby| ruby.class_object().const_get("MRML").unwrap());
|
12
|
+
|
13
|
+
static ERROR: Lazy<ExceptionClass> =
|
14
|
+
Lazy::new(|ruby| ruby.get_inner(&MODULE).const_get("Error").unwrap());
|
15
|
+
|
11
16
|
fn mrml_error() -> ExceptionClass {
|
12
|
-
|
13
|
-
let ex = class::object().const_get::<_, RModule>("MRML").unwrap().const_get("Error").unwrap();
|
14
|
-
register_mark_object(ex);
|
15
|
-
ex
|
16
|
-
})
|
17
|
+
Ruby::get().unwrap().get_inner(&ERROR)
|
17
18
|
}
|
18
19
|
|
19
20
|
macro_rules! error {
|
@@ -30,7 +31,7 @@ struct Template {
|
|
30
31
|
impl Template {
|
31
32
|
fn new(input: String) -> Result<Self, Error> {
|
32
33
|
match mrml::parse(&input) {
|
33
|
-
Ok(
|
34
|
+
Ok(output) => Ok(Self { res: output.element }),
|
34
35
|
Err(ex) => Err(error!(ex))
|
35
36
|
}
|
36
37
|
}
|
@@ -76,9 +77,9 @@ impl Clone for Template {
|
|
76
77
|
}
|
77
78
|
|
78
79
|
#[magnus::init]
|
79
|
-
fn init() -> Result<(), Error> {
|
80
|
-
let module = define_module("MRML")?;
|
81
|
-
let class = module.define_class("Template",
|
80
|
+
fn init(ruby: &Ruby) -> Result<(), Error> {
|
81
|
+
let module = ruby.define_module("MRML")?;
|
82
|
+
let class = module.define_class("Template", ruby.class_object())?;
|
82
83
|
|
83
84
|
class.define_singleton_method("new", function!(Template::new, 1))?;
|
84
85
|
class.define_singleton_method("from_json", function!(Template::from_json, 1))?;
|
data/lib/mrml/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mrml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonian Guveli
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: rb_sys
|
@@ -88,7 +87,6 @@ homepage: https://github.com/hardpixel/mrml-ruby
|
|
88
87
|
licenses:
|
89
88
|
- MIT
|
90
89
|
metadata: {}
|
91
|
-
post_install_message:
|
92
90
|
rdoc_options: []
|
93
91
|
require_paths:
|
94
92
|
- lib
|
@@ -96,15 +94,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
94
|
requirements:
|
97
95
|
- - ">="
|
98
96
|
- !ruby/object:Gem::Version
|
99
|
-
version: '2.
|
97
|
+
version: '2.7'
|
100
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
99
|
requirements:
|
102
100
|
- - ">="
|
103
101
|
- !ruby/object:Gem::Version
|
104
102
|
version: '0'
|
105
103
|
requirements: []
|
106
|
-
rubygems_version: 3.
|
107
|
-
signing_key:
|
104
|
+
rubygems_version: 3.6.9
|
108
105
|
specification_version: 4
|
109
106
|
summary: Ruby wrapper for MRML Rust
|
110
107
|
test_files: []
|