redcarpet 3.0.0 → 3.1.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.
Potentially problematic release.
This version of redcarpet might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/Gemfile +11 -0
- data/README.markdown +43 -25
- data/Rakefile +4 -1
- data/bin/redcarpet +8 -3
- data/ext/redcarpet/autolink.h +2 -2
- data/ext/redcarpet/buffer.c +2 -31
- data/ext/redcarpet/buffer.h +2 -8
- data/ext/redcarpet/houdini.h +0 -8
- data/ext/redcarpet/houdini_html_e.c +3 -8
- data/ext/redcarpet/html.c +124 -33
- data/ext/redcarpet/html.h +4 -4
- data/ext/redcarpet/markdown.c +345 -22
- data/ext/redcarpet/markdown.h +10 -13
- data/ext/redcarpet/rc_markdown.c +6 -0
- data/ext/redcarpet/rc_render.c +49 -5
- data/ext/redcarpet/stack.c +0 -19
- data/ext/redcarpet/stack.h +0 -3
- data/lib/redcarpet.rb +8 -8
- data/lib/redcarpet/render_strip.rb +4 -2
- data/redcarpet.gemspec +4 -4
- data/test/html_render_test.rb +88 -4
- data/test/html_toc_render_test.rb +55 -0
- data/test/markdown_test.rb +43 -6
- data/test/smarty_html_test.rb +15 -0
- metadata +10 -48
@@ -0,0 +1,55 @@
|
|
1
|
+
# coding: UTF-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class HTMLTOCRenderTest < Test::Unit::TestCase
|
5
|
+
class CustomTocRender < Redcarpet::Render::HTML_TOC
|
6
|
+
def header(text, level, anchor)
|
7
|
+
"<h#{level} id=\"foo-bar-#{anchor}\">#{text}</h1>"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@render = Redcarpet::Render::HTML_TOC
|
13
|
+
@markdown = "# A title \n## A __nice__ subtitle\n## Another one \n### A sub-sub-title"
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_simple_toc_render
|
17
|
+
renderer = Redcarpet::Markdown.new(@render)
|
18
|
+
output = renderer.render(@markdown).strip
|
19
|
+
|
20
|
+
assert output.start_with?("<ul>")
|
21
|
+
assert output.end_with?("</ul>")
|
22
|
+
|
23
|
+
assert_equal 4, output.split("<ul>").length
|
24
|
+
assert_equal 5, output.split("<li>").length
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_granular_toc_render
|
28
|
+
renderer = Redcarpet::Markdown.new(@render.new(nesting_level: 2))
|
29
|
+
output = renderer.render(@markdown).strip
|
30
|
+
|
31
|
+
assert output.start_with?("<ul>")
|
32
|
+
assert output.end_with?("</ul>")
|
33
|
+
|
34
|
+
assert_equal 4, output.split("<li>").length
|
35
|
+
assert !output.include?("A sub-sub title")
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_toc_heading_id
|
39
|
+
renderer = Redcarpet::Markdown.new(@render)
|
40
|
+
output = renderer.render(@markdown)
|
41
|
+
|
42
|
+
assert_match /a-title/, output
|
43
|
+
assert_match /a-nice-subtitle/, output
|
44
|
+
assert_match /another-one/, output
|
45
|
+
assert_match /a-sub-sub-title/, output
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_header_callback
|
49
|
+
renderer = Redcarpet::Markdown.new(CustomTocRender)
|
50
|
+
output = renderer.render(@markdown)
|
51
|
+
|
52
|
+
assert_match /A title/, output
|
53
|
+
assert_match /foo-bar-a-title/, output
|
54
|
+
end
|
55
|
+
end
|
data/test/markdown_test.rb
CHANGED
@@ -67,6 +67,27 @@ class MarkdownTest < Test::Unit::TestCase
|
|
67
67
|
"<ul>\n<li>Blah</li>\n</ul>\n", markdown
|
68
68
|
end
|
69
69
|
|
70
|
+
# https://github.com/vmg/redcarpet/issues/111
|
71
|
+
def test_p_with_less_than_4space_indent_should_not_be_part_of_last_list_item
|
72
|
+
text = <<MARKDOWN
|
73
|
+
* a
|
74
|
+
* b
|
75
|
+
* c
|
76
|
+
|
77
|
+
This paragraph is not part of the list.
|
78
|
+
MARKDOWN
|
79
|
+
expected = <<HTML
|
80
|
+
<ul>
|
81
|
+
<li>a</li>
|
82
|
+
<li>b</li>
|
83
|
+
<li>c</li>
|
84
|
+
</ul>
|
85
|
+
|
86
|
+
<p>This paragraph is not part of the list.</p>
|
87
|
+
HTML
|
88
|
+
html_equal expected, @markdown.render(text)
|
89
|
+
end
|
90
|
+
|
70
91
|
# http://github.com/rtomayko/rdiscount/issues/#issue/13
|
71
92
|
def test_headings_with_trailing_space
|
72
93
|
text = "The Ant-Sugar Tales \n" +
|
@@ -179,6 +200,15 @@ EOS
|
|
179
200
|
assert output.include? '<mark>highlighted</mark>'
|
180
201
|
end
|
181
202
|
|
203
|
+
def test_quote_flag_works
|
204
|
+
text = 'this is "quote"'
|
205
|
+
|
206
|
+
refute render_with({}, text).include? '<q>quote</q>'
|
207
|
+
|
208
|
+
output = render_with({:quote => true}, text)
|
209
|
+
assert output.include? '<q>quote</q>'
|
210
|
+
end
|
211
|
+
|
182
212
|
def test_that_fenced_flag_works
|
183
213
|
text = <<fenced
|
184
214
|
This is a simple test
|
@@ -203,12 +233,6 @@ fenced
|
|
203
233
|
assert !out.include?("<pre><code>")
|
204
234
|
end
|
205
235
|
|
206
|
-
def test_that_prettify_works
|
207
|
-
text = "foo\nbar\n```\nsome\ncode\n```\nbaz"
|
208
|
-
out = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(:prettify => true), :fenced_code_blocks => true).render(text)
|
209
|
-
assert !out.include?("<pre><code class=\"prettyprint\">")
|
210
|
-
end
|
211
|
-
|
212
236
|
def test_that_indented_flag_works
|
213
237
|
text = <<indented
|
214
238
|
This is a simple text
|
@@ -250,4 +274,17 @@ text
|
|
250
274
|
html = "<p>This is (<strong>bold</strong>) and this_is_not_italic!</p>\n"
|
251
275
|
assert_equal html, render_with({:no_intra_emphasis => true}, markdown)
|
252
276
|
end
|
277
|
+
|
278
|
+
def test_ordered_lists_with_lax_spacing
|
279
|
+
markdown = "Foo:\n1. Foo\n2. Bar"
|
280
|
+
output = render_with({lax_spacing: true}, markdown)
|
281
|
+
|
282
|
+
assert_match /<ol>/, output
|
283
|
+
assert_match /<li>Foo<\/li>/, output
|
284
|
+
end
|
285
|
+
|
286
|
+
def test_references_with_tabs_after_colon
|
287
|
+
markdown = @markdown.render("[Link][id]\n[id]:\t\t\thttp://google.es")
|
288
|
+
html_equal '<p><a href="http://google.es">Link</a></p>', markdown
|
289
|
+
end
|
253
290
|
end
|
data/test/smarty_html_test.rb
CHANGED
@@ -16,6 +16,21 @@ class SmartyHTMLTest < Test::Unit::TestCase
|
|
16
16
|
assert_equal %(<p>“Quoted text”</p>\n), rd
|
17
17
|
end
|
18
18
|
|
19
|
+
def test_that_smartyhtml_converts_double_hyphen
|
20
|
+
rd = @smarty_markdown.render("double hyphen -- ndash")
|
21
|
+
assert_equal "<p>double hyphen – ndash</p>\n", rd
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_that_smartyhtml_converts_triple_hyphen
|
25
|
+
rd = @smarty_markdown.render("triple hyphen --- mdash")
|
26
|
+
assert_equal "<p>triple hyphen — mdash</p>\n", rd
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_that_smartyhtml_ignores_double_hyphen_in_code
|
30
|
+
rd = @smarty_markdown.render("double hyphen in `--option`")
|
31
|
+
assert_equal "<p>double hyphen in <code>--option</code></p>\n", rd
|
32
|
+
end
|
33
|
+
|
19
34
|
def test_that_smartyhtml_ignores_pre
|
20
35
|
rd = @smarty_markdown.render(" It's a test of \"pre\"\n")
|
21
36
|
expected = "It's a test of "pre""
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redcarpet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
5
|
-
prerelease:
|
4
|
+
version: 3.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Natacha Porté
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2014-02-08 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: nokogiri
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ~>
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,7 +21,6 @@ dependencies:
|
|
23
21
|
type: :development
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ~>
|
29
26
|
- !ruby/object:Gem::Version
|
@@ -31,7 +28,6 @@ dependencies:
|
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rake-compiler
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
32
|
- - ~>
|
37
33
|
- !ruby/object:Gem::Version
|
@@ -39,7 +35,6 @@ dependencies:
|
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
39
|
- - ~>
|
45
40
|
- !ruby/object:Gem::Version
|
@@ -47,7 +42,6 @@ dependencies:
|
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: test-unit
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
46
|
- - ~>
|
53
47
|
- !ruby/object:Gem::Version
|
@@ -55,43 +49,10 @@ dependencies:
|
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
53
|
- - ~>
|
61
54
|
- !ruby/object:Gem::Version
|
62
55
|
version: 2.5.4
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: bluecloth
|
65
|
-
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
|
-
requirements:
|
68
|
-
- - ~>
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: 2.2.0
|
71
|
-
type: :development
|
72
|
-
prerelease: false
|
73
|
-
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
|
-
requirements:
|
76
|
-
- - ~>
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 2.2.0
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: kramdown
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - ~>
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 1.0.2
|
87
|
-
type: :development
|
88
|
-
prerelease: false
|
89
|
-
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
|
-
requirements:
|
92
|
-
- - ~>
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: 1.0.2
|
95
56
|
description: A fast, safe and extensible Markdown to (X)HTML parser
|
96
57
|
email: vicent@github.com
|
97
58
|
executables:
|
@@ -133,6 +94,7 @@ files:
|
|
133
94
|
- test/test_helper.rb
|
134
95
|
- test/custom_render_test.rb
|
135
96
|
- test/html_render_test.rb
|
97
|
+
- test/html_toc_render_test.rb
|
136
98
|
- test/markdown_test.rb
|
137
99
|
- test/pathological_inputs_test.rb
|
138
100
|
- test/redcarpet_compat_test.rb
|
@@ -142,32 +104,32 @@ files:
|
|
142
104
|
homepage: http://github.com/vmg/redcarpet
|
143
105
|
licenses:
|
144
106
|
- MIT
|
107
|
+
metadata: {}
|
145
108
|
post_install_message:
|
146
109
|
rdoc_options: []
|
147
110
|
require_paths:
|
148
111
|
- lib
|
149
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
150
|
-
none: false
|
151
113
|
requirements:
|
152
|
-
- -
|
114
|
+
- - '>='
|
153
115
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
116
|
+
version: 1.9.2
|
155
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
-
none: false
|
157
118
|
requirements:
|
158
|
-
- -
|
119
|
+
- - '>='
|
159
120
|
- !ruby/object:Gem::Version
|
160
121
|
version: '0'
|
161
122
|
requirements: []
|
162
123
|
rubyforge_project:
|
163
|
-
rubygems_version:
|
124
|
+
rubygems_version: 2.0.3
|
164
125
|
signing_key:
|
165
|
-
specification_version:
|
126
|
+
specification_version: 4
|
166
127
|
summary: Markdown that smells nice
|
167
128
|
test_files:
|
168
129
|
- test/test_helper.rb
|
169
130
|
- test/custom_render_test.rb
|
170
131
|
- test/html_render_test.rb
|
132
|
+
- test/html_toc_render_test.rb
|
171
133
|
- test/markdown_test.rb
|
172
134
|
- test/pathological_inputs_test.rb
|
173
135
|
- test/redcarpet_compat_test.rb
|