redcarpet 1.5.0 → 2.0.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/README.markdown +312 -20
- data/Rakefile +31 -36
- data/bin/redcarpet +1 -1
- data/ext/redcarpet/autolink.c +260 -0
- data/ext/{xhtml.h → redcarpet/autolink.h} +17 -24
- data/ext/redcarpet/buffer.c +229 -0
- data/ext/redcarpet/buffer.h +88 -0
- data/ext/redcarpet/houdini.h +29 -0
- data/ext/redcarpet/houdini_href_e.c +108 -0
- data/ext/redcarpet/houdini_html_e.c +84 -0
- data/ext/redcarpet/html.c +603 -0
- data/ext/redcarpet/html.h +67 -0
- data/ext/redcarpet/html_blocks.h +206 -0
- data/ext/redcarpet/html_smartypants.c +385 -0
- data/ext/redcarpet/markdown.c +2454 -0
- data/ext/redcarpet/markdown.h +130 -0
- data/ext/redcarpet/rc_markdown.c +137 -0
- data/ext/redcarpet/rc_render.c +434 -0
- data/ext/redcarpet/redcarpet.h +33 -0
- data/ext/redcarpet/stack.c +81 -0
- data/ext/redcarpet/stack.h +21 -0
- data/lib/redcarpet/render_man.rb +65 -0
- data/lib/redcarpet.rb +65 -72
- data/redcarpet.gemspec +29 -20
- data/test/redcarpet_test.rb +232 -88
- metadata +45 -29
- data/ext/array.c +0 -300
- data/ext/array.h +0 -148
- data/ext/buffer.c +0 -319
- data/ext/buffer.h +0 -145
- data/ext/markdown.c +0 -2076
- data/ext/markdown.h +0 -107
- data/ext/redcarpet.c +0 -140
- data/ext/xhtml.c +0 -779
- data/lib/markdown.rb +0 -1
- data/test/benchmark.rb +0 -56
- data/test/benchmark.txt +0 -306
- data/test/markdown_test.rb +0 -186
- /data/ext/{extconf.rb → redcarpet/extconf.rb} +0 -0
data/test/redcarpet_test.rb
CHANGED
|
@@ -1,139 +1,212 @@
|
|
|
1
|
-
#
|
|
1
|
+
# coding: UTF-8
|
|
2
2
|
rootdir = File.dirname(File.dirname(__FILE__))
|
|
3
3
|
$LOAD_PATH.unshift "#{rootdir}/lib"
|
|
4
4
|
|
|
5
|
+
if defined? Encoding
|
|
6
|
+
Encoding.default_internal = 'UTF-8'
|
|
7
|
+
end
|
|
8
|
+
|
|
5
9
|
require 'test/unit'
|
|
6
10
|
require 'redcarpet'
|
|
11
|
+
require 'redcarpet/render_man'
|
|
12
|
+
require 'nokogiri'
|
|
7
13
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
def html_equal(html_a, html_b)
|
|
15
|
+
assert_equal Nokogiri::HTML::DocumentFragment.parse(html_a).to_html,
|
|
16
|
+
Nokogiri::HTML::DocumentFragment.parse(html_b).to_html
|
|
17
|
+
end
|
|
12
18
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
Redcarpet
|
|
19
|
+
class SmartyPantsTest < Test::Unit::TestCase
|
|
20
|
+
def setup
|
|
21
|
+
@pants = Redcarpet::Render::SmartyPants
|
|
16
22
|
end
|
|
17
23
|
|
|
18
|
-
def
|
|
19
|
-
|
|
20
|
-
assert_equal
|
|
24
|
+
def test_that_smart_converts_single_quotes_in_words_that_end_in_re
|
|
25
|
+
markdown = @pants.render("<p>They're not for sale.</p>")
|
|
26
|
+
assert_equal "<p>They’re not for sale.</p>", markdown
|
|
21
27
|
end
|
|
22
28
|
|
|
23
|
-
def
|
|
24
|
-
|
|
25
|
-
assert_equal
|
|
29
|
+
def test_that_smart_converts_single_quotes_in_words_that_end_in_ll
|
|
30
|
+
markdown = @pants.render("<p>Well that'll be the day</p>")
|
|
31
|
+
assert_equal "<p>Well that’ll be the day</p>", markdown
|
|
26
32
|
end
|
|
27
33
|
|
|
28
|
-
def
|
|
29
|
-
rd =
|
|
30
|
-
assert_equal %(<
|
|
34
|
+
def test_that_smart_converts_double_quotes_to_curly_quotes
|
|
35
|
+
rd = @pants.render(%(<p>"Quoted text"</p>))
|
|
36
|
+
assert_equal %(<p>“Quoted text”</p>), rd
|
|
31
37
|
end
|
|
32
38
|
|
|
33
39
|
def test_that_smart_gives_ve_suffix_a_rsquo
|
|
34
|
-
rd =
|
|
35
|
-
assert_equal "<p>I’ve been meaning to tell you ..</p
|
|
40
|
+
rd = @pants.render("<p>I've been meaning to tell you ..</p>")
|
|
41
|
+
assert_equal "<p>I’ve been meaning to tell you ..</p>", rd
|
|
36
42
|
end
|
|
37
43
|
|
|
38
44
|
def test_that_smart_gives_m_suffix_a_rsquo
|
|
39
|
-
rd =
|
|
40
|
-
assert_equal "<p>I’m not kidding</p
|
|
45
|
+
rd = @pants.render("<p>I'm not kidding</p>")
|
|
46
|
+
assert_equal "<p>I’m not kidding</p>", rd
|
|
41
47
|
end
|
|
42
48
|
|
|
43
49
|
def test_that_smart_gives_d_suffix_a_rsquo
|
|
44
|
-
rd =
|
|
45
|
-
assert_equal "<p>what’d you say?</p
|
|
50
|
+
rd = @pants.render("<p>what'd you say?</p>")
|
|
51
|
+
assert_equal "<p>what’d you say?</p>", rd
|
|
46
52
|
end
|
|
53
|
+
end
|
|
47
54
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
class HTMLRenderTest < Test::Unit::TestCase
|
|
56
|
+
def setup
|
|
57
|
+
@markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
|
|
58
|
+
@rndr = {
|
|
59
|
+
:no_html => Redcarpet::Render::HTML.new(:filter_html => true),
|
|
60
|
+
:no_images => Redcarpet::Render::HTML.new(:no_images => true),
|
|
61
|
+
:no_links => Redcarpet::Render::HTML.new(:no_links => true),
|
|
62
|
+
:safe_links => Redcarpet::Render::HTML.new(:safe_links_only => true),
|
|
63
|
+
}
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def render_with(rndr, text)
|
|
67
|
+
Redcarpet::Markdown.new(rndr).render(text)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_that_filter_html_works
|
|
71
|
+
markdown = render_with(@rndr[:no_html], 'Through <em>NO</em> <script>DOUBLE NO</script>')
|
|
72
|
+
html_equal "<p>Through NO DOUBLE NO</p>", markdown
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_filter_html_doesnt_break_two_space_hard_break
|
|
76
|
+
markdown = render_with(@rndr[:no_html], "Lorem, \nipsum\n")
|
|
77
|
+
html_equal "<p>Lorem,<br/>\nipsum</p>\n", markdown
|
|
54
78
|
end
|
|
55
79
|
|
|
56
80
|
def test_that_no_image_flag_works
|
|
57
|
-
rd =
|
|
58
|
-
assert rd
|
|
81
|
+
rd = render_with(@rndr[:no_images], %( <img src="image.png" />))
|
|
82
|
+
assert rd !~ /<img/
|
|
59
83
|
end
|
|
60
84
|
|
|
61
85
|
def test_that_no_links_flag_works
|
|
62
|
-
rd =
|
|
63
|
-
assert rd
|
|
86
|
+
rd = render_with(@rndr[:no_links], %([This link](http://example.net/) <a href="links.html">links</a>))
|
|
87
|
+
assert rd !~ /<a /
|
|
64
88
|
end
|
|
65
89
|
|
|
66
|
-
def
|
|
67
|
-
rd =
|
|
68
|
-
|
|
90
|
+
def test_that_safelink_flag_works
|
|
91
|
+
rd = render_with(@rndr[:safe_links], "[IRC](irc://chat.freenode.org/#freenode)")
|
|
92
|
+
html_equal "<p>[IRC](irc://chat.freenode.org/#freenode)</p>\n", rd
|
|
69
93
|
end
|
|
94
|
+
end
|
|
70
95
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
96
|
+
class MarkdownTest < Test::Unit::TestCase
|
|
97
|
+
|
|
98
|
+
def setup
|
|
99
|
+
@markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
|
|
74
100
|
end
|
|
75
101
|
|
|
76
|
-
def
|
|
77
|
-
|
|
78
|
-
assert_equal "<p>[IRC](irc://chat.freenode.org/#freenode)</p>\n", rd.to_html
|
|
102
|
+
def render_with(flags, text)
|
|
103
|
+
Redcarpet::Markdown.new(Redcarpet::Render::HTML, flags).render(text)
|
|
79
104
|
end
|
|
80
105
|
|
|
81
|
-
def
|
|
82
|
-
|
|
83
|
-
|
|
106
|
+
def test_that_simple_one_liner_goes_to_html
|
|
107
|
+
assert_respond_to @markdown, :render
|
|
108
|
+
html_equal "<p>Hello World.</p>", @markdown.render("Hello World.")
|
|
84
109
|
end
|
|
85
|
-
|
|
86
|
-
def
|
|
87
|
-
|
|
88
|
-
|
|
110
|
+
|
|
111
|
+
def test_that_inline_markdown_goes_to_html
|
|
112
|
+
markdown = @markdown.render('_Hello World_!')
|
|
113
|
+
html_equal "<p><em>Hello World</em>!</p>", markdown
|
|
89
114
|
end
|
|
90
115
|
|
|
91
|
-
def
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
116
|
+
def test_that_inline_markdown_starts_and_ends_correctly
|
|
117
|
+
markdown = render_with({:no_intra_emphasis => true}, '_start _ foo_bar bar_baz _ end_ *italic* **bold** <a>_blah_</a>')
|
|
118
|
+
|
|
119
|
+
html_equal "<p><em>start _ foo_bar bar_baz _ end</em> <em>italic</em> <strong>bold</strong> <a><em>blah</em></a></p>", markdown
|
|
120
|
+
|
|
121
|
+
markdown = @markdown.render("Run 'rake radiant:extensions:rbac_base:migrate'")
|
|
122
|
+
html_equal "<p>Run 'rake radiant:extensions:rbac_base:migrate'</p>", markdown
|
|
95
123
|
end
|
|
96
124
|
|
|
97
|
-
def
|
|
98
|
-
|
|
99
|
-
|
|
125
|
+
def test_that_urls_are_not_doubly_escaped
|
|
126
|
+
markdown = @markdown.render('[Page 2](/search?query=Markdown+Test&page=2)')
|
|
127
|
+
html_equal "<p><a href=\"/search?query=Markdown+Test&page=2\">Page 2</a></p>\n", markdown
|
|
100
128
|
end
|
|
101
129
|
|
|
102
|
-
def
|
|
103
|
-
|
|
130
|
+
def test_simple_inline_html
|
|
131
|
+
#markdown = Markdown.new("before\n\n<div>\n foo\n</div>\nafter")
|
|
132
|
+
markdown = @markdown.render("before\n\n<div>\n foo\n</div>\n\nafter")
|
|
133
|
+
html_equal "<p>before</p>\n\n<div>\n foo\n</div>\n\n<p>after</p>\n", markdown
|
|
104
134
|
end
|
|
105
135
|
|
|
106
|
-
def
|
|
107
|
-
markdown =
|
|
136
|
+
def test_that_html_blocks_do_not_require_their_own_end_tag_line
|
|
137
|
+
markdown = @markdown.render("Para 1\n\n<div><pre>HTML block\n</pre></div>\n\nPara 2 [Link](#anchor)")
|
|
138
|
+
html_equal "<p>Para 1</p>\n\n<div><pre>HTML block\n</pre></div>\n\n<p>Para 2 <a href=\"#anchor\">Link</a></p>\n",
|
|
139
|
+
markdown
|
|
140
|
+
end
|
|
108
141
|
|
|
109
|
-
|
|
110
|
-
|
|
142
|
+
# This isn't in the spec but is Markdown.pl behavior.
|
|
143
|
+
def test_block_quotes_preceded_by_spaces
|
|
144
|
+
markdown = @markdown.render(
|
|
145
|
+
"A wise man once said:\n\n" +
|
|
146
|
+
" > Isn't it wonderful just to be alive.\n"
|
|
147
|
+
)
|
|
148
|
+
html_equal "<p>A wise man once said:</p>\n\n" +
|
|
149
|
+
"<blockquote><p>Isn't it wonderful just to be alive.</p>\n</blockquote>\n",
|
|
150
|
+
markdown
|
|
111
151
|
end
|
|
112
152
|
|
|
113
|
-
def
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
153
|
+
def test_para_before_block_html_should_not_wrap_in_p_tag
|
|
154
|
+
markdown = render_with({:lax_html_blocks => true},
|
|
155
|
+
"Things to watch out for\n" +
|
|
156
|
+
"<ul>\n<li>Blah</li>\n</ul>\n")
|
|
157
|
+
|
|
158
|
+
html_equal "<p>Things to watch out for</p>\n\n" +
|
|
159
|
+
"<ul>\n<li>Blah</li>\n</ul>\n", markdown
|
|
117
160
|
end
|
|
118
161
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
162
|
+
# http://github.com/rtomayko/rdiscount/issues/#issue/13
|
|
163
|
+
def test_headings_with_trailing_space
|
|
164
|
+
text = "The Ant-Sugar Tales \n" +
|
|
165
|
+
"=================== \n\n" +
|
|
166
|
+
"By Candice Yellowflower \n"
|
|
167
|
+
html_equal "<h1>The Ant-Sugar Tales </h1>\n\n<p>By Candice Yellowflower </p>\n", @markdown.render(text)
|
|
123
168
|
end
|
|
124
169
|
|
|
125
|
-
def
|
|
126
|
-
rd =
|
|
127
|
-
|
|
128
|
-
|
|
170
|
+
def test_that_intra_emphasis_works
|
|
171
|
+
rd = render_with({}, "foo_bar_baz")
|
|
172
|
+
html_equal "<p>foo<em>bar</em>baz</p>\n", rd
|
|
173
|
+
|
|
174
|
+
rd = render_with({:no_intra_emphasis => true},"foo_bar_baz")
|
|
175
|
+
html_equal "<p>foo_bar_baz</p>\n", rd
|
|
129
176
|
end
|
|
130
177
|
|
|
131
|
-
def
|
|
132
|
-
|
|
178
|
+
def test_that_autolink_flag_works
|
|
179
|
+
rd = render_with({:autolink => true}, "http://github.com/rtomayko/rdiscount")
|
|
180
|
+
html_equal "<p><a href=\"http://github.com/rtomayko/rdiscount\">http://github.com/rtomayko/rdiscount</a></p>\n", rd
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
if "".respond_to?(:encoding)
|
|
184
|
+
def test_should_return_string_in_same_encoding_as_input
|
|
185
|
+
input = "Yogācāra"
|
|
186
|
+
output = @markdown.render(input)
|
|
187
|
+
assert_equal input.encoding.name, output.encoding.name
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def test_that_tags_can_have_dashes_and_underscores
|
|
192
|
+
rd = @markdown.render("foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b>")
|
|
193
|
+
html_equal "<p>foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b></p>\n", rd
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def test_link_syntax_is_not_processed_within_code_blocks
|
|
197
|
+
markdown = @markdown.render(" This is a code block\n This is a link [[1]] inside\n")
|
|
198
|
+
html_equal "<pre><code>This is a code block\nThis is a link [[1]] inside\n</code></pre>\n",
|
|
199
|
+
markdown
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def test_whitespace_after_urls
|
|
203
|
+
rd = render_with({:autolink => true}, "Japan: http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm (yes, japan)")
|
|
204
|
+
exp = %{<p>Japan: <a href="http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm">http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm</a> (yes, japan)</p>}
|
|
205
|
+
html_equal exp, rd
|
|
133
206
|
end
|
|
134
207
|
|
|
135
208
|
def test_memory_leak_when_parsing_char_links
|
|
136
|
-
|
|
209
|
+
@markdown.render(<<-leaks)
|
|
137
210
|
2. Identify the wild-type cluster and determine all clusters
|
|
138
211
|
containing or contained by it:
|
|
139
212
|
|
|
@@ -148,29 +221,35 @@ class RedcarpetTest < Test::Unit::TestCase
|
|
|
148
221
|
end
|
|
149
222
|
|
|
150
223
|
def test_infinite_loop_in_header
|
|
151
|
-
|
|
224
|
+
html_equal @markdown.render(<<-header), "<h1>Body</h1>"
|
|
152
225
|
######
|
|
153
226
|
#Body#
|
|
154
227
|
######
|
|
155
228
|
header
|
|
156
229
|
end
|
|
157
230
|
|
|
158
|
-
def
|
|
159
|
-
|
|
231
|
+
def test_that_tables_flag_works
|
|
232
|
+
text = <<EOS
|
|
160
233
|
aaa | bbbb
|
|
161
234
|
-----|------
|
|
162
235
|
hello|sailor
|
|
163
236
|
EOS
|
|
164
|
-
|
|
237
|
+
|
|
238
|
+
assert render_with({}, text) !~ /<table/
|
|
239
|
+
|
|
240
|
+
assert render_with({:tables => true}, text) =~ /<table/
|
|
165
241
|
end
|
|
166
242
|
|
|
167
|
-
def
|
|
168
|
-
|
|
169
|
-
|
|
243
|
+
def test_strikethrough_flag_works
|
|
244
|
+
text = "this is ~some~ striked ~~text~~"
|
|
245
|
+
|
|
246
|
+
assert render_with({}, text) !~ /<del/
|
|
247
|
+
|
|
248
|
+
assert render_with({:strikethrough => true}, text) =~ /<del/
|
|
170
249
|
end
|
|
171
250
|
|
|
172
|
-
def
|
|
173
|
-
|
|
251
|
+
def test_that_fenced_flag_works
|
|
252
|
+
text = <<fenced
|
|
174
253
|
This is a simple test
|
|
175
254
|
|
|
176
255
|
~~~~~
|
|
@@ -178,7 +257,72 @@ This is some awesome code
|
|
|
178
257
|
with tabs and shit
|
|
179
258
|
~~~
|
|
180
259
|
fenced
|
|
181
|
-
|
|
260
|
+
|
|
261
|
+
assert render_with({}, text) !~ /<code/
|
|
262
|
+
|
|
263
|
+
assert render_with({:fenced_code_blocks => true}, text) =~ /<code/
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
def test_that_headers_are_linkable
|
|
267
|
+
markdown = @markdown.render('### Hello [GitHub](http://github.com)')
|
|
268
|
+
html_equal "<h3>Hello <a href=\"http://github.com\">GitHub</a></h3>", markdown
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
def test_autolinking_with_ent_chars
|
|
272
|
+
markdown = render_with({:autolink => true}, <<text)
|
|
273
|
+
This a stupid link: https://github.com/rtomayko/tilt/issues?milestone=1&state=open
|
|
274
|
+
text
|
|
275
|
+
html_equal "<p>This a stupid link: <a href=\"https://github.com/rtomayko/tilt/issues?milestone=1&state=open\">https://github.com/rtomayko/tilt/issues?milestone=1&state=open</a></p>\n", markdown
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
def test_spaced_headers
|
|
279
|
+
rd = render_with({:space_after_headers => true}, "#123 a header yes\n")
|
|
280
|
+
assert rd !~ /<h1>/
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
class CustomRenderTest < Test::Unit::TestCase
|
|
285
|
+
class SimpleRender < Redcarpet::Render::HTML
|
|
286
|
+
def emphasis(text)
|
|
287
|
+
"<em class=\"cool\">#{text}</em>"
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def test_simple_overload
|
|
292
|
+
md = Redcarpet::Markdown.new(SimpleRender)
|
|
293
|
+
html_equal "<p>This is <em class=\"cool\">just</em> a test</p>",
|
|
294
|
+
md.render("This is *just* a test")
|
|
295
|
+
end
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
# Disabled by default
|
|
299
|
+
# (these are the easy ones -- the evil ones are not disclosed)
|
|
300
|
+
class PathologicalInputsTest # < Test::Unit::TestCase
|
|
301
|
+
def setup
|
|
302
|
+
@markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
def test_pathological_1
|
|
306
|
+
star = '*' * 250000
|
|
307
|
+
@markdown.render("#{star}#{star} hi #{star}#{star}")
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
def test_pathological_2
|
|
311
|
+
crt = '^' * 255
|
|
312
|
+
str = "#{crt}(\\)"
|
|
313
|
+
@markdown.render("#{str*300}")
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
def test_pathological_3
|
|
317
|
+
c = "`t`t`t`t`t`t" * 20000000
|
|
318
|
+
@markdown.render(c)
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def test_pathological_4
|
|
322
|
+
@markdown.render(" [^a]: #{ "A" * 10000 }\n#{ "[^a][]" * 1000000 }\n")
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
def test_unbound_recursion
|
|
326
|
+
@markdown.render(("[" * 10000) + "foo" + ("](bar)" * 10000))
|
|
182
327
|
end
|
|
183
|
-
|
|
184
328
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: redcarpet
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: 15
|
|
5
|
+
prerelease:
|
|
6
6
|
segments:
|
|
7
|
-
-
|
|
8
|
-
-
|
|
7
|
+
- 2
|
|
8
|
+
- 0
|
|
9
9
|
- 0
|
|
10
|
-
version:
|
|
10
|
+
version: 2.0.0
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- "Natacha Port\xC3\xA9"
|
|
@@ -16,16 +16,28 @@ autorequire:
|
|
|
16
16
|
bindir: bin
|
|
17
17
|
cert_chain: []
|
|
18
18
|
|
|
19
|
-
date: 2011-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
date: 2011-09-14 00:00:00 Z
|
|
20
|
+
dependencies:
|
|
21
|
+
- !ruby/object:Gem::Dependency
|
|
22
|
+
name: rake-compiler
|
|
23
|
+
prerelease: false
|
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
hash: 3
|
|
30
|
+
segments:
|
|
31
|
+
- 0
|
|
32
|
+
version: "0"
|
|
33
|
+
type: :development
|
|
34
|
+
version_requirements: *id001
|
|
35
|
+
description: A fast, safe and extensible Markdown to (X)HTML parser
|
|
24
36
|
email: vicent@github.com
|
|
25
37
|
executables:
|
|
26
38
|
- redcarpet
|
|
27
39
|
extensions:
|
|
28
|
-
- ext/extconf.rb
|
|
40
|
+
- ext/redcarpet/extconf.rb
|
|
29
41
|
extra_rdoc_files:
|
|
30
42
|
- COPYING
|
|
31
43
|
files:
|
|
@@ -33,24 +45,29 @@ files:
|
|
|
33
45
|
- README.markdown
|
|
34
46
|
- Rakefile
|
|
35
47
|
- bin/redcarpet
|
|
36
|
-
- ext/
|
|
37
|
-
- ext/
|
|
38
|
-
- ext/buffer.c
|
|
39
|
-
- ext/buffer.h
|
|
40
|
-
- ext/extconf.rb
|
|
41
|
-
- ext/
|
|
42
|
-
- ext/
|
|
43
|
-
- ext/redcarpet.c
|
|
44
|
-
- ext/
|
|
45
|
-
- ext/
|
|
46
|
-
-
|
|
48
|
+
- ext/redcarpet/autolink.c
|
|
49
|
+
- ext/redcarpet/autolink.h
|
|
50
|
+
- ext/redcarpet/buffer.c
|
|
51
|
+
- ext/redcarpet/buffer.h
|
|
52
|
+
- ext/redcarpet/extconf.rb
|
|
53
|
+
- ext/redcarpet/houdini.h
|
|
54
|
+
- ext/redcarpet/houdini_href_e.c
|
|
55
|
+
- ext/redcarpet/houdini_html_e.c
|
|
56
|
+
- ext/redcarpet/html.c
|
|
57
|
+
- ext/redcarpet/html.h
|
|
58
|
+
- ext/redcarpet/html_blocks.h
|
|
59
|
+
- ext/redcarpet/html_smartypants.c
|
|
60
|
+
- ext/redcarpet/markdown.c
|
|
61
|
+
- ext/redcarpet/markdown.h
|
|
62
|
+
- ext/redcarpet/rc_markdown.c
|
|
63
|
+
- ext/redcarpet/rc_render.c
|
|
64
|
+
- ext/redcarpet/redcarpet.h
|
|
65
|
+
- ext/redcarpet/stack.c
|
|
66
|
+
- ext/redcarpet/stack.h
|
|
47
67
|
- lib/redcarpet.rb
|
|
68
|
+
- lib/redcarpet/render_man.rb
|
|
48
69
|
- redcarpet.gemspec
|
|
49
|
-
- test/benchmark.rb
|
|
50
|
-
- test/benchmark.txt
|
|
51
|
-
- test/markdown_test.rb
|
|
52
70
|
- test/redcarpet_test.rb
|
|
53
|
-
has_rdoc: true
|
|
54
71
|
homepage: http://github.com/tanoku/redcarpet
|
|
55
72
|
licenses: []
|
|
56
73
|
|
|
@@ -80,10 +97,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
80
97
|
requirements: []
|
|
81
98
|
|
|
82
99
|
rubyforge_project:
|
|
83
|
-
rubygems_version: 1.
|
|
100
|
+
rubygems_version: 1.8.6
|
|
84
101
|
signing_key:
|
|
85
102
|
specification_version: 3
|
|
86
|
-
summary:
|
|
103
|
+
summary: Markdown that smells nice
|
|
87
104
|
test_files:
|
|
88
|
-
- test/markdown_test.rb
|
|
89
105
|
- test/redcarpet_test.rb
|