redcarpet 3.6.0 → 3.6.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.markdown +3 -3
- data/ext/redcarpet/rc_markdown.c +15 -5
- data/ext/redcarpet/rc_render.c +33 -19
- data/ext/redcarpet/redcarpet.h +2 -0
- data/lib/redcarpet.rb +1 -1
- data/redcarpet.gemspec +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 462c33d63034f594e30924779a9c9f7af0259236599f54146374b5d428d2e720
|
4
|
+
data.tar.gz: 8c7177817c2ef112e46b51f60f578c4b67d7e541c2e6967b08657fafba30021e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5595f573f3c3b903fabd07d126cf2ceeb80685538b081978eec0ae9a1d24a33d8bed2c21c16289d1b5e7394194536f082d7f6b5c68b98392d22f810df0d9dea0
|
7
|
+
data.tar.gz: 56b799de0bd8df8b1c3bc462757dd0dc30340f73239822d4888c704fb43aacc12fc9a42f46adbdb2161aff60da0781487a61f9935b38d9dc43e21583a59a94ad
|
data/CHANGELOG.md
CHANGED
data/README.markdown
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Redcarpet is written with sugar, spice and everything nice
|
2
2
|
============================================================
|
3
3
|
|
4
|
-
[](https://github.com/vmg/redcarpet/actions/workflows/test.yml)
|
5
5
|
[](https://www.codetriage.com/vmg/redcarpet)
|
6
6
|
[](https://badge.fury.io/rb/redcarpet)
|
7
7
|
|
@@ -341,8 +341,8 @@ Redcarpet::Render::SmartyPants.render("<p>Oh SmartyPants, you're so crazy...</p>
|
|
341
341
|
~~~~
|
342
342
|
|
343
343
|
SmartyPants works on top of already-rendered HTML, and will ignore replacements
|
344
|
-
inside the content of HTML tags and inside specific HTML blocks
|
345
|
-
|
344
|
+
inside the content of HTML tags and inside specific HTML blocks (`pre`, `code`,
|
345
|
+
`var`, `samp`, `kbd`, `math`, `script`, `style`).
|
346
346
|
|
347
347
|
What? You really want to mix Markdown renderers?
|
348
348
|
------------------------------------------------
|
data/ext/redcarpet/rc_markdown.c
CHANGED
@@ -85,6 +85,17 @@ rb_redcarpet_md__free(void *markdown)
|
|
85
85
|
sd_markdown_free((struct sd_markdown *)markdown);
|
86
86
|
}
|
87
87
|
|
88
|
+
static const rb_data_type_t rb_redcarpet_md__type = {
|
89
|
+
"Redcarpet/md",
|
90
|
+
{
|
91
|
+
NULL, // Nothing to mark
|
92
|
+
rb_redcarpet_md__free,
|
93
|
+
},
|
94
|
+
0,
|
95
|
+
0,
|
96
|
+
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
|
97
|
+
};
|
98
|
+
|
88
99
|
static VALUE rb_redcarpet_md__new(int argc, VALUE *argv, VALUE klass)
|
89
100
|
{
|
90
101
|
VALUE rb_markdown, rb_rndr, hash, rndr_options;
|
@@ -111,7 +122,7 @@ static VALUE rb_redcarpet_md__new(int argc, VALUE *argv, VALUE klass)
|
|
111
122
|
if (rb_obj_is_kind_of(rb_rndr, rb_cRenderHTML_TOC))
|
112
123
|
extensions |= MKDEXT_FENCED_CODE;
|
113
124
|
|
114
|
-
|
125
|
+
rndr = rb_redcarpet_rndr_unwrap(rb_rndr);
|
115
126
|
|
116
127
|
/* Merge the current options in the @options hash */
|
117
128
|
if (hash != Qnil) {
|
@@ -123,7 +134,7 @@ static VALUE rb_redcarpet_md__new(int argc, VALUE *argv, VALUE klass)
|
|
123
134
|
if (!markdown)
|
124
135
|
rb_raise(rb_eRuntimeError, "Failed to create new Renderer class");
|
125
136
|
|
126
|
-
rb_markdown =
|
137
|
+
rb_markdown = TypedData_Wrap_Struct(klass, &rb_redcarpet_md__type, markdown);
|
127
138
|
rb_iv_set(rb_markdown, "@renderer", rb_rndr);
|
128
139
|
|
129
140
|
return rb_markdown;
|
@@ -138,15 +149,14 @@ static VALUE rb_redcarpet_md_render(VALUE self, VALUE text)
|
|
138
149
|
Check_Type(text, T_STRING);
|
139
150
|
|
140
151
|
rb_rndr = rb_iv_get(self, "@renderer");
|
141
|
-
|
152
|
+
TypedData_Get_Struct(self, struct sd_markdown, &rb_redcarpet_md__type, markdown);
|
142
153
|
|
143
154
|
if (rb_respond_to(rb_rndr, rb_intern("preprocess")))
|
144
155
|
text = rb_funcall(rb_rndr, rb_intern("preprocess"), 1, text);
|
145
156
|
if (NIL_P(text))
|
146
157
|
return Qnil;
|
147
158
|
|
148
|
-
struct rb_redcarpet_rndr *renderer;
|
149
|
-
Data_Get_Struct(rb_rndr, struct rb_redcarpet_rndr, renderer);
|
159
|
+
struct rb_redcarpet_rndr *renderer = rb_redcarpet_rndr_unwrap(rb_rndr);
|
150
160
|
renderer->options.active_enc = rb_enc_get(text);
|
151
161
|
|
152
162
|
/* initialize buffers */
|
data/ext/redcarpet/rc_render.c
CHANGED
@@ -299,17 +299,6 @@ cb_link_attribute(VALUE key, VALUE val, VALUE payload)
|
|
299
299
|
return 0;
|
300
300
|
}
|
301
301
|
|
302
|
-
static void
|
303
|
-
rndr_link_attributes(struct buf *ob, const struct buf *url, void *opaque)
|
304
|
-
{
|
305
|
-
struct redcarpet_renderopt *opt = opaque;
|
306
|
-
struct rb_redcarpet_rndr *rndr;
|
307
|
-
|
308
|
-
Data_Get_Struct(opt->self, struct rb_redcarpet_rndr, rndr);
|
309
|
-
Check_Type(opt->link_attributes, T_HASH);
|
310
|
-
rb_hash_foreach(opt->link_attributes, &cb_link_attribute, (VALUE)ob);
|
311
|
-
}
|
312
|
-
|
313
302
|
static struct sd_callbacks rb_redcarpet_callbacks = {
|
314
303
|
rndr_blockcode,
|
315
304
|
rndr_blockquote,
|
@@ -388,22 +377,47 @@ static const char *rb_redcarpet_method_names[] = {
|
|
388
377
|
|
389
378
|
static const size_t rb_redcarpet_method_count = sizeof(rb_redcarpet_method_names)/sizeof(char *);
|
390
379
|
|
391
|
-
static void rb_redcarpet_rbase_mark(
|
380
|
+
static void rb_redcarpet_rbase_mark(void *data)
|
392
381
|
{
|
382
|
+
struct rb_redcarpet_rndr *rndr = (struct rb_redcarpet_rndr *)data;
|
393
383
|
if (rndr->options.link_attributes)
|
394
384
|
rb_gc_mark(rndr->options.link_attributes);
|
395
385
|
}
|
396
386
|
|
397
|
-
static
|
387
|
+
static const rb_data_type_t rb_redcarpet_rndr_type = {
|
388
|
+
"Redcarpet/rndr",
|
389
|
+
{
|
390
|
+
rb_redcarpet_rbase_mark,
|
391
|
+
RUBY_TYPED_DEFAULT_FREE,
|
392
|
+
},
|
393
|
+
0,
|
394
|
+
0,
|
395
|
+
RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED,
|
396
|
+
};
|
397
|
+
|
398
|
+
struct rb_redcarpet_rndr * rb_redcarpet_rndr_unwrap(VALUE self)
|
398
399
|
{
|
399
|
-
|
400
|
+
struct rb_redcarpet_rndr *rndr;
|
401
|
+
TypedData_Get_Struct(self, struct rb_redcarpet_rndr, &rb_redcarpet_rndr_type, rndr);
|
402
|
+
return rndr;
|
400
403
|
}
|
401
404
|
|
402
405
|
static VALUE rb_redcarpet_rbase_alloc(VALUE klass)
|
403
406
|
{
|
404
407
|
struct rb_redcarpet_rndr *rndr = ALLOC(struct rb_redcarpet_rndr);
|
405
408
|
memset(rndr, 0x0, sizeof(struct rb_redcarpet_rndr));
|
406
|
-
return
|
409
|
+
return TypedData_Wrap_Struct(klass, &rb_redcarpet_rndr_type, rndr);
|
410
|
+
}
|
411
|
+
|
412
|
+
static void
|
413
|
+
rndr_link_attributes(struct buf *ob, const struct buf *url, void *opaque)
|
414
|
+
{
|
415
|
+
struct redcarpet_renderopt *opt = opaque;
|
416
|
+
struct rb_redcarpet_rndr *rndr;
|
417
|
+
|
418
|
+
TypedData_Get_Struct(opt->self, struct rb_redcarpet_rndr, &rb_redcarpet_rndr_type, rndr);
|
419
|
+
Check_Type(opt->link_attributes, T_HASH);
|
420
|
+
rb_hash_foreach(opt->link_attributes, &cb_link_attribute, (VALUE)ob);
|
407
421
|
}
|
408
422
|
|
409
423
|
static void rb_redcarpet__overload(VALUE self, VALUE base_class)
|
@@ -411,7 +425,7 @@ static void rb_redcarpet__overload(VALUE self, VALUE base_class)
|
|
411
425
|
struct rb_redcarpet_rndr *rndr;
|
412
426
|
VALUE options_ivar;
|
413
427
|
|
414
|
-
|
428
|
+
TypedData_Get_Struct(self, struct rb_redcarpet_rndr, &rb_redcarpet_rndr_type, rndr);
|
415
429
|
rndr->options.self = self;
|
416
430
|
rndr->options.base_class = base_class;
|
417
431
|
|
@@ -448,7 +462,7 @@ static VALUE rb_redcarpet_html_init(int argc, VALUE *argv, VALUE self)
|
|
448
462
|
unsigned int render_flags = 0;
|
449
463
|
VALUE hash, link_attr = Qnil;
|
450
464
|
|
451
|
-
|
465
|
+
TypedData_Get_Struct(self, struct rb_redcarpet_rndr, &rb_redcarpet_rndr_type, rndr);
|
452
466
|
|
453
467
|
if (rb_scan_args(argc, argv, "01", &hash) == 1) {
|
454
468
|
Check_Type(hash, T_HASH);
|
@@ -500,7 +514,7 @@ static VALUE rb_redcarpet_html_init(int argc, VALUE *argv, VALUE self)
|
|
500
514
|
rb_redcarpet__overload(self, rb_cRenderHTML);
|
501
515
|
|
502
516
|
if (!NIL_P(link_attr)) {
|
503
|
-
rndr->options.link_attributes
|
517
|
+
RB_OBJ_WRITE(self, &rndr->options.link_attributes, link_attr);
|
504
518
|
rndr->options.html.link_attributes = &rndr_link_attributes;
|
505
519
|
}
|
506
520
|
|
@@ -513,7 +527,7 @@ static VALUE rb_redcarpet_htmltoc_init(int argc, VALUE *argv, VALUE self)
|
|
513
527
|
unsigned int render_flags = HTML_TOC;
|
514
528
|
VALUE hash, nesting_level = Qnil;
|
515
529
|
|
516
|
-
|
530
|
+
TypedData_Get_Struct(self, struct rb_redcarpet_rndr, &rb_redcarpet_rndr_type, rndr);
|
517
531
|
|
518
532
|
if (rb_scan_args(argc, argv, "01", &hash) == 1) {
|
519
533
|
Check_Type(hash, T_HASH);
|
data/ext/redcarpet/redcarpet.h
CHANGED
data/lib/redcarpet.rb
CHANGED
data/redcarpet.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'redcarpet'
|
4
|
-
s.version = '3.6.
|
4
|
+
s.version = '3.6.1'
|
5
5
|
s.summary = "Markdown that smells nice"
|
6
6
|
s.description = 'A fast, safe and extensible Markdown to (X)HTML parser'
|
7
|
-
s.date = '
|
7
|
+
s.date = '2025-02-25'
|
8
8
|
s.email = 'vicent@github.com'
|
9
9
|
s.homepage = 'https://github.com/vmg/redcarpet'
|
10
10
|
s.authors = ["Natacha Porté", "Vicent Martí"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redcarpet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.6.
|
4
|
+
version: 3.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Natacha Porté
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2025-02-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
114
|
- !ruby/object:Gem::Version
|
115
115
|
version: '0'
|
116
116
|
requirements: []
|
117
|
-
rubygems_version: 3.
|
117
|
+
rubygems_version: 3.5.23
|
118
118
|
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: Markdown that smells nice
|