github-markdown 0.4.1 → 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.
- data/ext/markdown/autolink.c +41 -9
- data/ext/markdown/autolink.h +14 -7
- data/ext/markdown/buffer.c +2 -0
- data/ext/markdown/extconf.rb +2 -0
- data/ext/markdown/gh-markdown.c +3 -1
- data/ext/markdown/markdown.c +3 -3
- data/github-markdown.gemspec +2 -2
- metadata +5 -5
data/ext/markdown/autolink.c
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
*/
|
16
16
|
|
17
17
|
#include "buffer.h"
|
18
|
+
#include "autolink.h"
|
18
19
|
|
19
20
|
#include <string.h>
|
20
21
|
#include <stdlib.h>
|
@@ -132,7 +133,7 @@ autolink_delim(uint8_t *data, size_t link_end, size_t offset, size_t size)
|
|
132
133
|
}
|
133
134
|
|
134
135
|
static size_t
|
135
|
-
check_domain(uint8_t *data, size_t size)
|
136
|
+
check_domain(uint8_t *data, size_t size, int allow_short)
|
136
137
|
{
|
137
138
|
size_t i, np = 0;
|
138
139
|
|
@@ -144,13 +145,27 @@ check_domain(uint8_t *data, size_t size)
|
|
144
145
|
else if (!isalnum(data[i]) && data[i] != '-') break;
|
145
146
|
}
|
146
147
|
|
147
|
-
|
148
|
-
|
149
|
-
|
148
|
+
if (allow_short) {
|
149
|
+
/* We don't need a valid domain in the strict sense (with
|
150
|
+
* least one dot; so just make sure it's composed of valid
|
151
|
+
* domain characters and return the length of the the valid
|
152
|
+
* sequence. */
|
153
|
+
return i;
|
154
|
+
} else {
|
155
|
+
/* a valid domain needs to have at least a dot.
|
156
|
+
* that's as far as we get */
|
157
|
+
return np ? i : 0;
|
158
|
+
}
|
150
159
|
}
|
151
160
|
|
152
161
|
size_t
|
153
|
-
sd_autolink__www(
|
162
|
+
sd_autolink__www(
|
163
|
+
size_t *rewind_p,
|
164
|
+
struct buf *link,
|
165
|
+
uint8_t *data,
|
166
|
+
size_t offset,
|
167
|
+
size_t size,
|
168
|
+
unsigned int flags)
|
154
169
|
{
|
155
170
|
size_t link_end;
|
156
171
|
|
@@ -160,7 +175,7 @@ sd_autolink__www(size_t *rewind_p, struct buf *link, uint8_t *data, size_t offse
|
|
160
175
|
if (size < 4 || memcmp(data, "www.", strlen("www.")) != 0)
|
161
176
|
return 0;
|
162
177
|
|
163
|
-
link_end = check_domain(data, size);
|
178
|
+
link_end = check_domain(data, size, 0);
|
164
179
|
|
165
180
|
if (link_end == 0)
|
166
181
|
return 0;
|
@@ -180,7 +195,13 @@ sd_autolink__www(size_t *rewind_p, struct buf *link, uint8_t *data, size_t offse
|
|
180
195
|
}
|
181
196
|
|
182
197
|
size_t
|
183
|
-
sd_autolink__email(
|
198
|
+
sd_autolink__email(
|
199
|
+
size_t *rewind_p,
|
200
|
+
struct buf *link,
|
201
|
+
uint8_t *data,
|
202
|
+
size_t offset,
|
203
|
+
size_t size,
|
204
|
+
unsigned int flags)
|
184
205
|
{
|
185
206
|
size_t link_end, rewind;
|
186
207
|
int nb = 0, np = 0;
|
@@ -229,7 +250,13 @@ sd_autolink__email(size_t *rewind_p, struct buf *link, uint8_t *data, size_t off
|
|
229
250
|
}
|
230
251
|
|
231
252
|
size_t
|
232
|
-
sd_autolink__url(
|
253
|
+
sd_autolink__url(
|
254
|
+
size_t *rewind_p,
|
255
|
+
struct buf *link,
|
256
|
+
uint8_t *data,
|
257
|
+
size_t offset,
|
258
|
+
size_t size,
|
259
|
+
unsigned int flags)
|
233
260
|
{
|
234
261
|
size_t link_end, rewind = 0, domain_len;
|
235
262
|
|
@@ -241,9 +268,14 @@ sd_autolink__url(size_t *rewind_p, struct buf *link, uint8_t *data, size_t offse
|
|
241
268
|
|
242
269
|
if (!sd_autolink_issafe(data - rewind, size + rewind))
|
243
270
|
return 0;
|
271
|
+
|
244
272
|
link_end = strlen("://");
|
245
273
|
|
246
|
-
domain_len = check_domain(
|
274
|
+
domain_len = check_domain(
|
275
|
+
data + link_end,
|
276
|
+
size - link_end,
|
277
|
+
flags & SD_AUTOLINK_SHORT_DOMAINS);
|
278
|
+
|
247
279
|
if (domain_len == 0)
|
248
280
|
return 0;
|
249
281
|
|
data/ext/markdown/autolink.h
CHANGED
@@ -23,17 +23,24 @@
|
|
23
23
|
extern "C" {
|
24
24
|
#endif
|
25
25
|
|
26
|
-
|
26
|
+
enum {
|
27
|
+
SD_AUTOLINK_SHORT_DOMAINS = (1 << 0),
|
28
|
+
};
|
29
|
+
|
30
|
+
int
|
27
31
|
sd_autolink_issafe(const uint8_t *link, size_t link_len);
|
28
32
|
|
29
|
-
|
30
|
-
sd_autolink__www(size_t *rewind_p, struct buf *link,
|
33
|
+
size_t
|
34
|
+
sd_autolink__www(size_t *rewind_p, struct buf *link,
|
35
|
+
uint8_t *data, size_t offset, size_t size, unsigned int flags);
|
31
36
|
|
32
|
-
|
33
|
-
sd_autolink__email(size_t *rewind_p, struct buf *link,
|
37
|
+
size_t
|
38
|
+
sd_autolink__email(size_t *rewind_p, struct buf *link,
|
39
|
+
uint8_t *data, size_t offset, size_t size, unsigned int flags);
|
34
40
|
|
35
|
-
|
36
|
-
sd_autolink__url(size_t *rewind_p, struct buf *link,
|
41
|
+
size_t
|
42
|
+
sd_autolink__url(size_t *rewind_p, struct buf *link,
|
43
|
+
uint8_t *data, size_t offset, size_t size, unsigned int flags);
|
37
44
|
|
38
45
|
#ifdef __cplusplus
|
39
46
|
}
|
data/ext/markdown/buffer.c
CHANGED
data/ext/markdown/extconf.rb
CHANGED
data/ext/markdown/gh-markdown.c
CHANGED
@@ -27,6 +27,8 @@
|
|
27
27
|
#include "html.h"
|
28
28
|
#include "plaintext.h"
|
29
29
|
|
30
|
+
#define RUBY_EXPORT __attribute__ ((visibility ("default")))
|
31
|
+
|
30
32
|
static struct {
|
31
33
|
struct sd_markdown *md;
|
32
34
|
struct html_renderopt render_opts;
|
@@ -209,7 +211,7 @@ static void rb_ghmd__init_plaintext(void)
|
|
209
211
|
);
|
210
212
|
}
|
211
213
|
|
212
|
-
void Init_markdown()
|
214
|
+
void RUBY_EXPORT Init_markdown()
|
213
215
|
{
|
214
216
|
VALUE rb_mGitHub = rb_const_get(rb_cObject, rb_intern("GitHub"));
|
215
217
|
VALUE rb_cMarkdown = rb_define_class_under(rb_mGitHub, "Markdown", rb_cObject);
|
data/ext/markdown/markdown.c
CHANGED
@@ -771,7 +771,7 @@ char_autolink_www(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_
|
|
771
771
|
|
772
772
|
link = rndr_newbuf(rndr, BUFFER_SPAN);
|
773
773
|
|
774
|
-
if ((link_len = sd_autolink__www(&rewind, link, data, offset, size)) > 0) {
|
774
|
+
if ((link_len = sd_autolink__www(&rewind, link, data, offset, size, 0)) > 0) {
|
775
775
|
link_url = rndr_newbuf(rndr, BUFFER_SPAN);
|
776
776
|
BUFPUTSL(link_url, "http://");
|
777
777
|
bufput(link_url, link->data, link->size);
|
@@ -803,7 +803,7 @@ char_autolink_email(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, siz
|
|
803
803
|
|
804
804
|
link = rndr_newbuf(rndr, BUFFER_SPAN);
|
805
805
|
|
806
|
-
if ((link_len = sd_autolink__email(&rewind, link, data, offset, size)) > 0) {
|
806
|
+
if ((link_len = sd_autolink__email(&rewind, link, data, offset, size, 0)) > 0) {
|
807
807
|
ob->size -= rewind;
|
808
808
|
rndr->cb.autolink(ob, link, MKDA_EMAIL, rndr->opaque);
|
809
809
|
}
|
@@ -823,7 +823,7 @@ char_autolink_url(struct buf *ob, struct sd_markdown *rndr, uint8_t *data, size_
|
|
823
823
|
|
824
824
|
link = rndr_newbuf(rndr, BUFFER_SPAN);
|
825
825
|
|
826
|
-
if ((link_len = sd_autolink__url(&rewind, link, data, offset, size)) > 0) {
|
826
|
+
if ((link_len = sd_autolink__url(&rewind, link, data, offset, size, 0)) > 0) {
|
827
827
|
ob->size -= rewind;
|
828
828
|
rndr->cb.autolink(ob, link, MKDA_NORMAL, rndr->opaque);
|
829
829
|
}
|
data/github-markdown.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'github-markdown'
|
4
|
-
s.version = '0.
|
4
|
+
s.version = '0.5.0'
|
5
5
|
s.summary = 'The Markdown parser for GitHub.com'
|
6
6
|
s.description = 'Self-contained Markdown parser for GitHub, with all our custom extensions'
|
7
|
-
s.date = '2012-
|
7
|
+
s.date = '2012-07-08'
|
8
8
|
s.email = 'vicent@github.com'
|
9
9
|
s.homepage = 'http://github.github.com/github-flavored-markdown/'
|
10
10
|
s.authors = ['GitHub, Inc']
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github-markdown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 5
|
9
|
+
- 0
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- GitHub, Inc
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-07-08 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|