markly 0.2.0 → 0.5.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/ext/markly/markly.c +20 -20
- data/lib/markly/markly.bundle +0 -0
- data/lib/markly/renderer/html_renderer.rb +26 -1
- data/lib/markly/version.rb +1 -1
- metadata +3 -31
- data/lib/markly/markly.so +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 382ef4ee5a2e69398268595c59f914fc694c1fa0e450b7ba2f74a6ef06d17ede
|
4
|
+
data.tar.gz: 5d7119359d1f485980ac4ba9736384f0c67ac0002133021fccf3aa81896ef46e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b941bb485e19ed83aa4268e5586f39fdc4919e9dc6362dd729980b698a5f35e26299a742382e6055ee644d297393c0c1e95ef8cac5003765beb9ff47f1dc384
|
7
|
+
data.tar.gz: 356b61f0db0b4c0fa57d2cca31943264daaad9c31ed2bc5a04d7cdebf0fa27d863215c1ae1a48372d5ccc1b9a52a287ad8fee3657a778667d76cb3bf37592dff
|
data/ext/markly/markly.c
CHANGED
@@ -41,11 +41,15 @@ static VALUE sym_right;
|
|
41
41
|
static VALUE sym_center;
|
42
42
|
|
43
43
|
static void rb_Markly_Node_free(void *data) {
|
44
|
-
//
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
// If a parent of this node is already freed, `rb_Markly_Node_freed` will ensure all the nodes are nullified.
|
45
|
+
if (data) {
|
46
|
+
cmark_node *node = (cmark_node*)data;
|
47
|
+
|
48
|
+
if (cmark_node_parent(node) == NULL) {
|
49
|
+
cmark_node_free(node);
|
50
|
+
} else {
|
51
|
+
cmark_node_set_user_data(node, NULL);
|
52
|
+
}
|
49
53
|
}
|
50
54
|
}
|
51
55
|
|
@@ -79,6 +83,12 @@ static const rb_data_type_t rb_Markly_Node_Type = {
|
|
79
83
|
.flags = RUBY_TYPED_FREE_IMMEDIATELY,
|
80
84
|
};
|
81
85
|
|
86
|
+
static void rb_Markly_Node_freed(cmark_mem *mem, void *user_data) {
|
87
|
+
VALUE self = (VALUE)user_data;
|
88
|
+
|
89
|
+
RTYPEDDATA_DATA(self) = NULL;
|
90
|
+
}
|
91
|
+
|
82
92
|
static VALUE rb_Markly_Node_wrap(cmark_node *node) {
|
83
93
|
if (node == NULL)
|
84
94
|
return Qnil;
|
@@ -91,6 +101,7 @@ static VALUE rb_Markly_Node_wrap(cmark_node *node) {
|
|
91
101
|
|
92
102
|
VALUE self = TypedData_Wrap_Struct(rb_Markly_Node, &rb_Markly_Node_Type, node);
|
93
103
|
cmark_node_set_user_data(node, (void *)self);
|
104
|
+
cmark_node_set_user_data_free_func(node, rb_Markly_Node_freed);
|
94
105
|
|
95
106
|
return self;
|
96
107
|
}
|
@@ -121,16 +132,6 @@ static const rb_data_type_t rb_Markly_Parser_Type = {
|
|
121
132
|
.flags = RUBY_TYPED_FREE_IMMEDIATELY,
|
122
133
|
};
|
123
134
|
|
124
|
-
static VALUE rb_Markly_Parser_root(VALUE self) {
|
125
|
-
cmark_parser *parser = NULL;
|
126
|
-
|
127
|
-
TypedData_Get_Struct(self, cmark_parser, &rb_Markly_Parser_Type, parser);
|
128
|
-
|
129
|
-
assert(parser != NULL);
|
130
|
-
|
131
|
-
return rb_Markly_Node_wrap(parser->root);
|
132
|
-
}
|
133
|
-
|
134
135
|
static VALUE rb_Markly_Parser_alloc(VALUE self) {
|
135
136
|
return TypedData_Wrap_Struct(self, &rb_Markly_Parser_Type, NULL);
|
136
137
|
}
|
@@ -330,10 +331,10 @@ static VALUE rb_node_set_string_content(VALUE self, VALUE s) {
|
|
330
331
|
* Returns a {Symbol} representing the node's type.
|
331
332
|
*/
|
332
333
|
static VALUE rb_node_get_type(VALUE self) {
|
333
|
-
int node_type;
|
334
|
-
cmark_node *node;
|
335
|
-
VALUE symbol;
|
336
|
-
const char *s;
|
334
|
+
int node_type = 0;
|
335
|
+
cmark_node *node = NULL;
|
336
|
+
VALUE symbol = NULL;
|
337
|
+
const char *s = NULL;
|
337
338
|
|
338
339
|
TypedData_Get_Struct(self, cmark_node, &rb_Markly_Node_Type, node);
|
339
340
|
|
@@ -1193,7 +1194,6 @@ __attribute__((visibility("default"))) void Init_markly() {
|
|
1193
1194
|
rb_define_method(rb_Markly_Parser, "initialize", rb_Markly_Parser_initialize, 1);
|
1194
1195
|
rb_define_method(rb_Markly_Parser, "enable", rb_Markly_Parser_enable, 1);
|
1195
1196
|
rb_define_method(rb_Markly_Parser, "parse", rb_Markly_Parser_parse, 1);
|
1196
|
-
rb_define_method(rb_Markly_Parser, "root", rb_Markly_Parser_root, 0);
|
1197
1197
|
|
1198
1198
|
rb_Markly_Node = rb_define_class_under(rb_Markly, "Node", rb_cObject);
|
1199
1199
|
rb_define_singleton_method(rb_Markly_Node, "new", rb_node_new, 1);
|
Binary file
|
@@ -1,14 +1,36 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'cgi'
|
4
|
+
|
3
5
|
module Markly
|
4
|
-
class
|
6
|
+
class HTMLRenderer < Renderer
|
7
|
+
def initialize(ids: false, **options)
|
8
|
+
super(**options)
|
9
|
+
|
10
|
+
@ids = ids
|
11
|
+
@section = nil
|
12
|
+
end
|
13
|
+
|
5
14
|
def document(_)
|
15
|
+
@section = false
|
6
16
|
super
|
7
17
|
out("</ol>\n</section>\n") if @written_footnote_ix
|
18
|
+
out("</section>") if @section
|
19
|
+
end
|
20
|
+
|
21
|
+
def id_for(node)
|
22
|
+
if @ids
|
23
|
+
id = node.to_plaintext.chomp.downcase.gsub(/\s+/, '-')
|
24
|
+
|
25
|
+
return " id=\"#{CGI.escape_html id}\""
|
26
|
+
end
|
8
27
|
end
|
9
28
|
|
10
29
|
def header(node)
|
11
30
|
block do
|
31
|
+
out('</section>') if @section
|
32
|
+
@section = true
|
33
|
+
out("<section #{id_for(node)}>")
|
12
34
|
out('<h', node.header_level, "#{source_position(node)}>", :children,
|
13
35
|
'</h', node.header_level, '>')
|
14
36
|
end
|
@@ -249,4 +271,7 @@ module Markly
|
|
249
271
|
node.tasklist_item_checked?
|
250
272
|
end
|
251
273
|
end
|
274
|
+
|
275
|
+
# Legacy.
|
276
|
+
HtmlRenderer = HTMLRenderer
|
252
277
|
end
|
data/lib/markly/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garen Torikian
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2020-
|
13
|
+
date: 2020-07-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bake
|
@@ -26,34 +26,6 @@ dependencies:
|
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
|
-
- !ruby/object:Gem::Dependency
|
30
|
-
name: bake-bundler
|
31
|
-
requirement: !ruby/object:Gem::Requirement
|
32
|
-
requirements:
|
33
|
-
- - ">="
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: '0'
|
36
|
-
type: :development
|
37
|
-
prerelease: false
|
38
|
-
version_requirements: !ruby/object:Gem::Requirement
|
39
|
-
requirements:
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '0'
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
name: bake-modernize
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '0'
|
50
|
-
type: :development
|
51
|
-
prerelease: false
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: '0'
|
57
29
|
- !ruby/object:Gem::Dependency
|
58
30
|
name: minitest
|
59
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,7 +150,7 @@ files:
|
|
178
150
|
- ext/markly/xml.c
|
179
151
|
- lib/markly.rb
|
180
152
|
- lib/markly/flags.rb
|
181
|
-
- lib/markly/markly.
|
153
|
+
- lib/markly/markly.bundle
|
182
154
|
- lib/markly/node.rb
|
183
155
|
- lib/markly/node/inspect.rb
|
184
156
|
- lib/markly/renderer.rb
|
data/lib/markly/markly.so
DELETED
Binary file
|