tight-redcarpet 3.2.0 → 3.3.2t
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/COPYING +17 -11
- data/Gemfile +2 -2
- data/README.markdown +21 -15
- data/bin/redcarpet +4 -40
- data/ext/redcarpet/autolink.c +17 -11
- data/ext/redcarpet/autolink.h +17 -11
- data/ext/redcarpet/buffer.c +22 -16
- data/ext/redcarpet/buffer.h +17 -11
- data/ext/redcarpet/houdini.h +22 -0
- data/ext/redcarpet/houdini_href_e.c +22 -0
- data/ext/redcarpet/houdini_html_e.c +22 -0
- data/ext/redcarpet/html.c +54 -55
- data/ext/redcarpet/html.h +17 -17
- data/ext/redcarpet/html_smartypants.c +27 -15
- data/ext/redcarpet/markdown.c +25 -17
- data/ext/redcarpet/markdown.h +17 -12
- data/ext/redcarpet/rc_markdown.c +18 -11
- data/ext/redcarpet/rc_render.c +23 -12
- data/ext/redcarpet/redcarpet.h +22 -0
- data/ext/redcarpet/stack.c +22 -0
- data/ext/redcarpet/stack.h +22 -0
- data/lib/redcarpet.rb +2 -2
- data/lib/redcarpet/cli.rb +86 -0
- data/lib/redcarpet/render_strip.rb +13 -1
- data/redcarpet.gemspec +7 -5
- data/test/custom_render_test.rb +1 -1
- data/test/fixtures/benchmark.md +232 -0
- data/test/html_render_test.rb +5 -5
- data/test/html_toc_render_test.rb +2 -3
- data/test/markdown_test.rb +60 -26
- data/test/redcarpet_bin_test.rb +80 -0
- data/test/redcarpet_compat_test.rb +6 -6
- data/test/safe_render_test.rb +5 -6
- data/test/smarty_html_test.rb +8 -8
- data/test/smarty_pants_test.rb +5 -0
- data/test/stripdown_render_test.rb +26 -5
- data/test/test_helper.rb +9 -11
- metadata +14 -23
@@ -13,7 +13,7 @@ module Redcarpet
|
|
13
13
|
:autolink, :codespan, :double_emphasis,
|
14
14
|
:emphasis, :underline, :raw_html,
|
15
15
|
:triple_emphasis, :strikethrough,
|
16
|
-
:superscript,
|
16
|
+
:superscript, :highlight,
|
17
17
|
|
18
18
|
# footnotes
|
19
19
|
:footnotes, :footnote_def, :footnote_ref,
|
@@ -43,6 +43,18 @@ module Redcarpet
|
|
43
43
|
def header(text, header_level)
|
44
44
|
text + "\n"
|
45
45
|
end
|
46
|
+
|
47
|
+
def table(header, body)
|
48
|
+
"#{header}#{body}"
|
49
|
+
end
|
50
|
+
|
51
|
+
def table_row(content)
|
52
|
+
content + "\n"
|
53
|
+
end
|
54
|
+
|
55
|
+
def table_cell(content, alignment)
|
56
|
+
content + "\t"
|
57
|
+
end
|
46
58
|
end
|
47
59
|
end
|
48
60
|
end
|
data/redcarpet.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'tight-redcarpet'
|
4
|
-
s.version = '3.
|
4
|
+
s.version = '3.3.2t'
|
5
5
|
s.summary = "Markdown that smells nice (patch level 'tight')"
|
6
6
|
s.description = 'A fast, safe and extensible Markdown to (X)HTML parser patched to have smaller headings and no quote-escaping'
|
7
|
-
s.date = '2015-
|
7
|
+
s.date = '2015-09-24'
|
8
8
|
s.email = 'ujifgc@github.com'
|
9
9
|
s.homepage = 'http://github.com/ujifgc/redcarpet'
|
10
10
|
s.authors = ["Natacha Porté", "Vicent Martí", "Igor Bochkariov"]
|
@@ -37,17 +37,20 @@ Gem::Specification.new do |s|
|
|
37
37
|
ext/redcarpet/stack.c
|
38
38
|
ext/redcarpet/stack.h
|
39
39
|
lib/redcarpet.rb
|
40
|
+
lib/redcarpet/cli.rb
|
40
41
|
lib/redcarpet/compat.rb
|
41
42
|
lib/redcarpet/render_man.rb
|
42
43
|
lib/redcarpet/render_strip.rb
|
43
44
|
redcarpet.gemspec
|
44
45
|
test/benchmark.rb
|
45
46
|
test/custom_render_test.rb
|
47
|
+
test/fixtures/benchmark.md
|
46
48
|
test/html5_test.rb
|
47
49
|
test/html_render_test.rb
|
48
50
|
test/html_toc_render_test.rb
|
49
51
|
test/markdown_test.rb
|
50
52
|
test/pathological_inputs_test.rb
|
53
|
+
test/redcarpet_bin_test.rb
|
51
54
|
test/redcarpet_compat_test.rb
|
52
55
|
test/safe_render_test.rb
|
53
56
|
test/smarty_html_test.rb
|
@@ -62,7 +65,6 @@ Gem::Specification.new do |s|
|
|
62
65
|
s.executables = ["redcarpet"]
|
63
66
|
s.require_paths = ["lib"]
|
64
67
|
|
65
|
-
s.add_development_dependency "
|
66
|
-
s.add_development_dependency "
|
67
|
-
s.add_development_dependency "test-unit", "~> 2.5.4"
|
68
|
+
s.add_development_dependency "rake-compiler", "~> 0.9.5"
|
69
|
+
s.add_development_dependency "test-unit", "~> 3.1.3"
|
68
70
|
end
|
data/test/custom_render_test.rb
CHANGED
@@ -10,7 +10,7 @@ class CustomRenderTest < Redcarpet::TestCase
|
|
10
10
|
|
11
11
|
def test_simple_overload
|
12
12
|
md = Redcarpet::Markdown.new(SimpleRender)
|
13
|
-
|
13
|
+
assert_equal "<p>This is <em class=\"cool\">just</em> a test</p>\n",
|
14
14
|
md.render("This is *just* a test")
|
15
15
|
end
|
16
16
|
|
@@ -0,0 +1,232 @@
|
|
1
|
+
Download
|
2
|
+
--------
|
3
|
+
|
4
|
+
[Markdown 1.0.1][dl] (18 KB) -- 17 Dec 2004
|
5
|
+
|
6
|
+
[dl]: http://daringfireball.net/projects/downloads/Markdown_1.0.1.zip
|
7
|
+
|
8
|
+
|
9
|
+
Introduction
|
10
|
+
------------
|
11
|
+
|
12
|
+
Markdown is a text-to-HTML conversion tool for web writers. Markdown
|
13
|
+
allows you to write using an easy-to-read, easy-to-write plain text
|
14
|
+
format, then convert it to structurally valid XHTML (or HTML).
|
15
|
+
|
16
|
+
Thus, "Markdown" is two things: (1) a plain text formatting syntax;
|
17
|
+
and (2) a software tool, written in Perl, that converts the plain text
|
18
|
+
formatting to HTML. See the [Syntax][] page for details pertaining to
|
19
|
+
Markdown's formatting syntax. You can try it out, right now, using the
|
20
|
+
online [Dingus][].
|
21
|
+
|
22
|
+
[syntax]: /projects/markdown/syntax
|
23
|
+
[dingus]: /projects/markdown/dingus
|
24
|
+
|
25
|
+
The overriding design goal for Markdown's formatting syntax is to make
|
26
|
+
it as readable as possible. The idea is that a Markdown-formatted
|
27
|
+
document should be publishable as-is, as plain text, without looking
|
28
|
+
like it's been marked up with tags or formatting instructions. While
|
29
|
+
Markdown's syntax has been influenced by several existing text-to-HTML
|
30
|
+
filters, the single biggest source of inspiration for Markdown's
|
31
|
+
syntax is the format of plain text email.
|
32
|
+
|
33
|
+
The best way to get a feel for Markdown's formatting syntax is simply
|
34
|
+
to look at a Markdown-formatted document. For example, you can view
|
35
|
+
the Markdown source for the article text on this page here:
|
36
|
+
<http://daringfireball.net/projects/markdown/index.text>
|
37
|
+
|
38
|
+
(You can use this '.text' suffix trick to view the Markdown source for
|
39
|
+
the content of each of the pages in this section, e.g. the
|
40
|
+
[Syntax][s_src] and [License][l_src] pages.)
|
41
|
+
|
42
|
+
[s_src]: /projects/markdown/syntax.text
|
43
|
+
[l_src]: /projects/markdown/license.text
|
44
|
+
|
45
|
+
Markdown is free software, available under a BSD-style open source
|
46
|
+
license. See the [License] [pl] page for more information.
|
47
|
+
|
48
|
+
[pl]: /projects/markdown/license
|
49
|
+
|
50
|
+
|
51
|
+
Discussion List <a id="discussion-list" />
|
52
|
+
---------------
|
53
|
+
|
54
|
+
I've set up a public [mailing list for discussion about Markdown] [ml].
|
55
|
+
Any topic related to Markdown -- both its formatting syntax and
|
56
|
+
its software -- is fair game for discussion. Anyone who is interested
|
57
|
+
is welcome to join.
|
58
|
+
|
59
|
+
It's my hope that the mailing list will lead to good ideas for future
|
60
|
+
improvements to Markdown.
|
61
|
+
|
62
|
+
[ml]: http://six.pairlist.net/mailman/listinfo/markdown-discuss
|
63
|
+
|
64
|
+
|
65
|
+
Installation and Requirements <a id="install" />
|
66
|
+
-----------------------------
|
67
|
+
|
68
|
+
Markdown requires Perl 5.6.0 or later. Welcome to the 21st Century.
|
69
|
+
Markdown also requires the standard Perl library module [Digest::MD5]
|
70
|
+
[md5], which is probably already installed on your server.
|
71
|
+
|
72
|
+
[md5]: http://search.cpan.org/dist/Digest-MD5/MD5.pm
|
73
|
+
|
74
|
+
|
75
|
+
### Movable Type ###
|
76
|
+
|
77
|
+
Markdown works with Movable Type version 2.6 or later (including
|
78
|
+
Movable Type 3.0).
|
79
|
+
|
80
|
+
1. Copy the "Markdown.pl" file into your Movable Type "plugins"
|
81
|
+
directory. The "plugins" directory should be in the same directory
|
82
|
+
as "mt.cgi"; if the "plugins" directory doesn't already exist, use
|
83
|
+
your FTP program to create it. Your installation should look like
|
84
|
+
this:
|
85
|
+
|
86
|
+
(mt home)/plugins/Markdown.pl
|
87
|
+
|
88
|
+
2. Once installed, Markdown will appear as an option in Movable Type's
|
89
|
+
Text Formatting pop-up menu. This is selectable on a per-post basis:
|
90
|
+
|
91
|
+
![Screenshot of Movable Type 'Text Formatting' Menu][tfmenu]
|
92
|
+
|
93
|
+
Markdown translates your posts to HTML when you publish; the posts
|
94
|
+
themselves are stored in your MT database in Markdown format.
|
95
|
+
|
96
|
+
3. If you also install SmartyPants 1.5 (or later), Markdown will
|
97
|
+
offer a second text formatting option: "Markdown With
|
98
|
+
SmartyPants". This option is the same as the regular "Markdown"
|
99
|
+
formatter, except that it automatically uses SmartyPants to create
|
100
|
+
typographically correct curly quotes, em-dashes, and ellipses. See
|
101
|
+
the [SmartyPants web page][sp] for more information.
|
102
|
+
|
103
|
+
4. To make Markdown (or "Markdown With SmartyPants") your default
|
104
|
+
text formatting option for new posts, go to Weblog Config:
|
105
|
+
Preferences.
|
106
|
+
|
107
|
+
Note that by default, Markdown produces XHTML output. To configure
|
108
|
+
Markdown to produce HTML 4 output, see "Configuration", below.
|
109
|
+
|
110
|
+
[sp]: http://daringfireball.net/projects/smartypants/
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
### Blosxom ###
|
115
|
+
|
116
|
+
Markdown works with Blosxom version 2.0 or later.
|
117
|
+
|
118
|
+
1. Rename the "Markdown.pl" plug-in to "Markdown" (case is
|
119
|
+
important). Movable Type requires plug-ins to have a ".pl"
|
120
|
+
extension; Blosxom forbids it.
|
121
|
+
|
122
|
+
2. Copy the "Markdown" plug-in file to your Blosxom plug-ins folder.
|
123
|
+
If you're not sure where your Blosxom plug-ins folder is, see the
|
124
|
+
Blosxom documentation for information.
|
125
|
+
|
126
|
+
3. That's it. The entries in your weblog will now automatically be
|
127
|
+
processed by Markdown.
|
128
|
+
|
129
|
+
4. If you'd like to apply Markdown formatting only to certain
|
130
|
+
posts, rather than all of them, Markdown can optionally be used in
|
131
|
+
conjunction with Blosxom's [Meta][] plug-in. First, install the
|
132
|
+
Meta plug-in. Next, open the Markdown plug-in file in a text
|
133
|
+
editor, and set the configuration variable `$g_blosxom_use_meta`
|
134
|
+
to 1. Then, simply include a "`meta-markup: Markdown`" header line
|
135
|
+
at the top of each post you compose using Markdown.
|
136
|
+
|
137
|
+
[meta]: http://www.blosxom.com/plugins/meta/meta.htm
|
138
|
+
|
139
|
+
|
140
|
+
### BBEdit ###
|
141
|
+
|
142
|
+
Markdown works with BBEdit 6.1 or later on Mac OS X. It also works
|
143
|
+
with BBEdit 5.1 or later and MacPerl 5.6.1 on Mac OS 8.6 or later. If
|
144
|
+
you're running Mac OS X 10.2 (Jaguar), you may need to install the
|
145
|
+
Perl module [Digest::MD5] [md5] from CPAN; Digest::MD5 comes
|
146
|
+
pre-installed on Mac OS X 10.3 (Panther).
|
147
|
+
|
148
|
+
1. Copy the "Markdown.pl" file to appropriate filters folder in your
|
149
|
+
"BBEdit Support" folder. On Mac OS X, this should be:
|
150
|
+
|
151
|
+
BBEdit Support/Unix Support/Unix Filters/
|
152
|
+
|
153
|
+
See the BBEdit documentation for more details on the location of
|
154
|
+
these folders.
|
155
|
+
|
156
|
+
You can rename "Markdown.pl" to whatever you wish.
|
157
|
+
|
158
|
+
2. That's it. To use Markdown, select some text in a BBEdit document,
|
159
|
+
then choose Markdown from the Filters sub-menu in the "#!" menu, or
|
160
|
+
the Filters floating palette
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
Configuration <a id="configuration"></a>
|
165
|
+
-------------
|
166
|
+
|
167
|
+
By default, Markdown produces XHTML output for tags with empty elements.
|
168
|
+
E.g.:
|
169
|
+
|
170
|
+
<br />
|
171
|
+
|
172
|
+
Markdown can be configured to produce HTML-style tags; e.g.:
|
173
|
+
|
174
|
+
<br>
|
175
|
+
|
176
|
+
|
177
|
+
### Movable Type ###
|
178
|
+
|
179
|
+
You need to use a special `MTMarkdownOptions` container tag in each
|
180
|
+
Movable Type template where you want HTML 4-style output:
|
181
|
+
|
182
|
+
<MTMarkdownOptions output='html4'>
|
183
|
+
... put your entry content here ...
|
184
|
+
</MTMarkdownOptions>
|
185
|
+
|
186
|
+
The easiest way to use MTMarkdownOptions is probably to put the
|
187
|
+
opening tag right after your `<body>` tag, and the closing tag right
|
188
|
+
before `</body>`.
|
189
|
+
|
190
|
+
To suppress Markdown processing in a particular template, i.e. to
|
191
|
+
publish the raw Markdown-formatted text without translation into
|
192
|
+
(X)HTML, set the `output` attribute to 'raw':
|
193
|
+
|
194
|
+
<MTMarkdownOptions output='raw'>
|
195
|
+
... put your entry content here ...
|
196
|
+
</MTMarkdownOptions>
|
197
|
+
|
198
|
+
|
199
|
+
### Command-Line ###
|
200
|
+
|
201
|
+
Use the `--html4tags` command-line switch to produce HTML output from a
|
202
|
+
Unix-style command line. E.g.:
|
203
|
+
|
204
|
+
% perl Markdown.pl --html4tags foo.text
|
205
|
+
|
206
|
+
Type `perldoc Markdown.pl`, or read the POD documentation within the
|
207
|
+
Markdown.pl source code for more information.
|
208
|
+
|
209
|
+
|
210
|
+
Acknowledgements <a id="acknowledgements" />
|
211
|
+
----------------
|
212
|
+
|
213
|
+
[Aaron Swartz][] deserves a tremendous amount of credit for his feedback on the
|
214
|
+
design of Markdown's formatting syntax. Markdown is *much* better thanks
|
215
|
+
to Aaron's ideas, feedback, and testing. Also, Aaron's [html2text][]
|
216
|
+
is a very handy (and free) utility for turning HTML into
|
217
|
+
Markdown-formatted plain text.
|
218
|
+
|
219
|
+
[Nathaniel Irons][], [Dan Benjamin][], [Daniel Bogan][], and [Jason Perkins][]
|
220
|
+
also deserve thanks for their feedback.
|
221
|
+
|
222
|
+
[Michel Fortin][] has ported Markdown to PHP; it's a splendid port, and highly recommended for anyone looking for a PHP implementation of Markdown.
|
223
|
+
|
224
|
+
[Aaron Swartz]: http://www.aaronsw.com/
|
225
|
+
[Nathaniel Irons]: http://bumppo.net/
|
226
|
+
[Dan Benjamin]: http://hivelogic.com/
|
227
|
+
[Daniel Bogan]: http://waferbaby.com/
|
228
|
+
[Jason Perkins]: http://pressedpants.com/
|
229
|
+
[Michel Fortin]: http://www.michelf.com/projects/php-markdown/
|
230
|
+
[html2text]: http://www.aaronsw.com/2002/html2text/
|
231
|
+
|
232
|
+
[tfmenu]: /graphics/markdown/mt_textformat_menu.png
|
data/test/html_render_test.rb
CHANGED
@@ -20,24 +20,24 @@ EOS
|
|
20
20
|
|
21
21
|
<p><script>BAD</script></p>
|
22
22
|
|
23
|
-
<p><img src
|
23
|
+
<p><img src="/favicon.ico" /></p>
|
24
24
|
EOE
|
25
25
|
|
26
|
-
|
26
|
+
assert_equal expected, render(source, with: [:escape_html])
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_that_filter_html_works
|
30
30
|
markdown = 'Through <em>NO</em> <script>DOUBLE NO</script>'
|
31
31
|
output = render(markdown, with: [:filter_html])
|
32
32
|
|
33
|
-
|
33
|
+
assert_equal "<p>Through NO DOUBLE NO</p>\n", output
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_filter_html_doesnt_break_two_space_hard_break
|
37
37
|
markdown = "Lorem, \nipsum\n"
|
38
38
|
output = render(markdown, with: [:filter_html])
|
39
39
|
|
40
|
-
|
40
|
+
assert_equal "<p>Lorem,<br>\nipsum</p>\n", output
|
41
41
|
end
|
42
42
|
|
43
43
|
def test_that_no_image_flag_works
|
@@ -58,7 +58,7 @@ EOE
|
|
58
58
|
markdown = "[IRC](irc://chat.freenode.org/#freenode)"
|
59
59
|
output = render(markdown, with: [:safe_links_only])
|
60
60
|
|
61
|
-
|
61
|
+
assert_equal "<p>[IRC](irc://chat.freenode.org/#freenode)</p>\n", output
|
62
62
|
end
|
63
63
|
|
64
64
|
def test_that_hard_wrap_works
|
@@ -48,15 +48,14 @@ class HTMLTOCRenderTest < Redcarpet::TestCase
|
|
48
48
|
titles = {
|
49
49
|
"Donald E. Knuth" => "donald-e-knuth",
|
50
50
|
"Random text with *(bad)* characters" => "random-text-with-bad-characters",
|
51
|
-
"
|
52
|
-
"!@#Leading bad characters" => "leading-bad-characters",
|
51
|
+
"!@#Surrounding bad characters!@#" => "surrounding-bad-characters",
|
53
52
|
"Squeeze separators" => "squeeze-separators",
|
54
53
|
"Test with + sign" => "test-with-sign",
|
55
54
|
"Test with a Namespaced::Class" => "test-with-a-namespaced-class"
|
56
55
|
}
|
57
56
|
|
58
57
|
titles.each do |title, anchor|
|
59
|
-
assert_match anchor, render("# #{title}")
|
58
|
+
assert_match %("##{anchor}"), render("# #{title}")
|
60
59
|
end
|
61
60
|
end
|
62
61
|
|
data/test/markdown_test.rb
CHANGED
@@ -13,37 +13,37 @@ class MarkdownTest < Redcarpet::TestCase
|
|
13
13
|
|
14
14
|
def test_that_simple_one_liner_goes_to_html
|
15
15
|
assert_respond_to @markdown, :render
|
16
|
-
|
16
|
+
assert_equal "<p>Hello World.</p>\n", @markdown.render("Hello World.")
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_that_inline_markdown_goes_to_html
|
20
20
|
markdown = @markdown.render('_Hello World_!')
|
21
|
-
|
21
|
+
assert_equal "<p><em>Hello World</em>!</p>\n", markdown
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_that_inline_markdown_starts_and_ends_correctly
|
25
25
|
markdown = render_with({:no_intra_emphasis => true}, '_start _ foo_bar bar_baz _ end_ *italic* **bold** <a>_blah_</a>')
|
26
26
|
|
27
|
-
|
27
|
+
assert_equal "<p><em>start _ foo_bar bar_baz _ end</em> <em>italic</em> <strong>bold</strong> <a><em>blah</em></a></p>\n", markdown
|
28
28
|
|
29
29
|
markdown = @markdown.render("Run 'rake radiant:extensions:rbac_base:migrate'")
|
30
|
-
|
30
|
+
assert_equal "<p>Run 'rake radiant:extensions:rbac_base:migrate'</p>\n", markdown
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_that_urls_are_not_doubly_escaped
|
34
34
|
markdown = @markdown.render('[Page 2](/search?query=Markdown+Test&page=2)')
|
35
|
-
|
35
|
+
assert_equal "<p><a href=\"/search?query=Markdown+Test&page=2\">Page 2</a></p>\n", markdown
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_simple_inline_html
|
39
39
|
#markdown = Markdown.new("before\n\n<div>\n foo\n</div>\nafter")
|
40
40
|
markdown = @markdown.render("before\n\n<div>\n foo\n</div>\n\nafter")
|
41
|
-
|
41
|
+
assert_equal "<p>before</p>\n\n<div>\n foo\n</div>\n\n<p>after</p>\n", markdown
|
42
42
|
end
|
43
43
|
|
44
44
|
def test_that_html_blocks_do_not_require_their_own_end_tag_line
|
45
45
|
markdown = @markdown.render("Para 1\n\n<div><pre>HTML block\n</pre></div>\n\nPara 2 [Link](#anchor)")
|
46
|
-
|
46
|
+
assert_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",
|
47
47
|
markdown
|
48
48
|
end
|
49
49
|
|
@@ -53,8 +53,8 @@ class MarkdownTest < Redcarpet::TestCase
|
|
53
53
|
"A wise man once said:\n\n" +
|
54
54
|
" > Isn't it wonderful just to be alive.\n"
|
55
55
|
)
|
56
|
-
|
57
|
-
"<blockquote
|
56
|
+
assert_equal "<p>A wise man once said:</p>\n\n" +
|
57
|
+
"<blockquote>\n<p>Isn't it wonderful just to be alive.</p>\n</blockquote>\n",
|
58
58
|
markdown
|
59
59
|
end
|
60
60
|
|
@@ -63,7 +63,7 @@ class MarkdownTest < Redcarpet::TestCase
|
|
63
63
|
"Things to watch out for\n" +
|
64
64
|
"<ul>\n<li>Blah</li>\n</ul>\n")
|
65
65
|
|
66
|
-
|
66
|
+
assert_equal "<p>Things to watch out for</p>\n\n" +
|
67
67
|
"<ul>\n<li>Blah</li>\n</ul>\n", markdown
|
68
68
|
end
|
69
69
|
|
@@ -85,7 +85,7 @@ MARKDOWN
|
|
85
85
|
|
86
86
|
<p>This paragraph is not part of the list.</p>
|
87
87
|
HTML
|
88
|
-
|
88
|
+
assert_equal expected, @markdown.render(text)
|
89
89
|
end
|
90
90
|
|
91
91
|
# http://github.com/rtomayko/rdiscount/issues/#issue/13
|
@@ -93,37 +93,37 @@ HTML
|
|
93
93
|
text = "The Ant-Sugar Tales \n" +
|
94
94
|
"=================== \n\n" +
|
95
95
|
"By Candice Yellowflower \n"
|
96
|
-
|
96
|
+
assert_equal "<h3>The Ant-Sugar Tales </h3>\n\n<p>By Candice Yellowflower </p>\n", @markdown.render(text)
|
97
97
|
end
|
98
98
|
|
99
99
|
def test_that_intra_emphasis_works
|
100
100
|
rd = render_with({}, "foo_bar_baz")
|
101
|
-
|
101
|
+
assert_equal "<p>foo<em>bar</em>baz</p>\n", rd
|
102
102
|
|
103
103
|
rd = render_with({:no_intra_emphasis => true},"foo_bar_baz")
|
104
|
-
|
104
|
+
assert_equal "<p>foo_bar_baz</p>\n", rd
|
105
105
|
end
|
106
106
|
|
107
107
|
def test_that_autolink_flag_works
|
108
108
|
rd = render_with({:autolink => true}, "http://github.com/rtomayko/rdiscount")
|
109
|
-
|
109
|
+
assert_equal "<p><a href=\"http://github.com/rtomayko/rdiscount\">http://github.com/rtomayko/rdiscount</a></p>\n", rd
|
110
110
|
end
|
111
111
|
|
112
112
|
def test_that_tags_can_have_dashes_and_underscores
|
113
113
|
rd = @markdown.render("foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b>")
|
114
|
-
|
114
|
+
assert_equal "<p>foo <asdf-qwerty>bar</asdf-qwerty> and <a_b>baz</a_b></p>\n", rd
|
115
115
|
end
|
116
116
|
|
117
117
|
def test_link_syntax_is_not_processed_within_code_blocks
|
118
118
|
markdown = @markdown.render(" This is a code block\n This is a link [[1]] inside\n")
|
119
|
-
|
119
|
+
assert_equal "<pre><code>This is a code block\nThis is a link [[1]] inside\n</code></pre>\n",
|
120
120
|
markdown
|
121
121
|
end
|
122
122
|
|
123
123
|
def test_whitespace_after_urls
|
124
124
|
rd = render_with({:autolink => true}, "Japan: http://www.abc.net.au/news/events/japan-quake-2011/beforeafter.htm (yes, japan)")
|
125
125
|
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>\n}
|
126
|
-
|
126
|
+
assert_equal exp, rd
|
127
127
|
end
|
128
128
|
|
129
129
|
def test_memory_leak_when_parsing_char_links
|
@@ -142,7 +142,7 @@ HTML
|
|
142
142
|
end
|
143
143
|
|
144
144
|
def test_infinite_loop_in_header
|
145
|
-
|
145
|
+
assert_equal "<h1>Body</h1>\n", @markdown.render(<<-header)
|
146
146
|
######
|
147
147
|
#Body#
|
148
148
|
######
|
@@ -150,8 +150,8 @@ HTML
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def test_a_hyphen_and_a_equal_should_not_be_converted_to_heading
|
153
|
-
|
154
|
-
|
153
|
+
assert_equal "<p>-</p>\n", @markdown.render("-")
|
154
|
+
assert_equal "<p>=</p>\n", @markdown.render("=")
|
155
155
|
end
|
156
156
|
|
157
157
|
def test_that_tables_flag_works
|
@@ -264,6 +264,18 @@ fenced
|
|
264
264
|
assert out.include?("[1]: http://google.com")
|
265
265
|
end
|
266
266
|
|
267
|
+
def test_that_fenced_code_copies_language_verbatim_with_braces
|
268
|
+
text = "```{rust,no_run}\nx = 'foo'\n```"
|
269
|
+
html = render_with({:fenced_code_blocks => true}, text)
|
270
|
+
assert_equal "<pre><code class=\"rust,no_run\">x = 'foo'\n</code></pre>\n", html
|
271
|
+
end
|
272
|
+
|
273
|
+
def test_that_fenced_code_copies_language_verbatim
|
274
|
+
text = "```rust,no_run\nx = 'foo'\n```"
|
275
|
+
html = render_with({:fenced_code_blocks => true}, text)
|
276
|
+
assert_equal "<pre><code class=\"rust,no_run\">x = 'foo'\n</code></pre>\n", html
|
277
|
+
end
|
278
|
+
|
267
279
|
def test_that_indented_flag_works
|
268
280
|
text = <<indented
|
269
281
|
This is a simple text
|
@@ -280,14 +292,14 @@ indented
|
|
280
292
|
|
281
293
|
def test_that_headers_are_linkable
|
282
294
|
markdown = @markdown.render('### Hello [GitHub](http://github.com)')
|
283
|
-
|
295
|
+
assert_equal "<h3>Hello <a href=\"http://github.com\">GitHub</a></h3>\n", markdown
|
284
296
|
end
|
285
297
|
|
286
298
|
def test_autolinking_with_ent_chars
|
287
299
|
markdown = render_with({:autolink => true}, <<text)
|
288
300
|
This a stupid link: https://github.com/rtomayko/tilt/issues?milestone=1&state=open
|
289
301
|
text
|
290
|
-
|
302
|
+
assert_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
|
291
303
|
end
|
292
304
|
|
293
305
|
def test_spaced_headers
|
@@ -313,13 +325,13 @@ text
|
|
313
325
|
|
314
326
|
def test_emphasis_escaping
|
315
327
|
markdown = @markdown.render("**foo\\*** _dd\\_dd_")
|
316
|
-
|
328
|
+
assert_equal "<p><strong>foo*</strong> <em>dd_dd</em></p>\n", markdown
|
317
329
|
end
|
318
330
|
|
319
331
|
def test_char_escaping_when_highlighting
|
320
332
|
markdown = "==attribute\\==="
|
321
333
|
output = render_with({highlight: true}, markdown)
|
322
|
-
|
334
|
+
assert_equal "<p><mark>attribute=</mark></p>\n", output
|
323
335
|
end
|
324
336
|
|
325
337
|
def test_ordered_lists_with_lax_spacing
|
@@ -332,6 +344,28 @@ text
|
|
332
344
|
|
333
345
|
def test_references_with_tabs_after_colon
|
334
346
|
markdown = @markdown.render("[Link][id]\n[id]:\t\t\thttp://google.es")
|
335
|
-
|
347
|
+
assert_equal "<p><a href=\"http://google.es\">Link</a></p>\n", markdown
|
348
|
+
end
|
349
|
+
|
350
|
+
def test_superscript
|
351
|
+
markdown = render_with({:superscript => true}, "this is the 2^nd time")
|
352
|
+
assert_equal "<p>this is the 2<sup>nd</sup> time</p>\n", markdown
|
353
|
+
end
|
354
|
+
|
355
|
+
def test_superscript_enclosed_in_parenthesis
|
356
|
+
markdown = render_with({:superscript => true}, "this is the 2^(nd) time")
|
357
|
+
assert_equal "<p>this is the 2<sup>nd</sup> time</p>\n", markdown
|
358
|
+
end
|
359
|
+
|
360
|
+
def test_no_rewind_into_previous_inline
|
361
|
+
result = "<p><em>!dl</em><a href=\"mailto:1@danlec.com\">1@danlec.com</a></p>\n"
|
362
|
+
output = render("_!dl_1@danlec.com", with: [:autolink])
|
363
|
+
|
364
|
+
assert_equal result, output
|
365
|
+
|
366
|
+
result = "<p>abc123<em><a href=\"http://www.foo.com\">www.foo.com</a></em>@foo.com</p>\n"
|
367
|
+
output = render("abc123_www.foo.com_@foo.com", with: [:autolink])
|
368
|
+
|
369
|
+
assert_equal result, output
|
336
370
|
end
|
337
371
|
end
|