kramdown 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of kramdown might be problematic. Click here for more details.
- data/AUTHORS +1 -0
- data/COPYING +24 -0
- data/ChangeLog +1416 -0
- data/GPL +674 -0
- data/README +20 -0
- data/Rakefile +300 -0
- data/VERSION +1 -0
- data/benchmark/benchmark.rb +33 -0
- data/benchmark/mdbasics.text +306 -0
- data/benchmark/mdsyntax.text +888 -0
- data/benchmark/testing.sh +9 -0
- data/benchmark/timing.sh +10 -0
- data/bin/kramdown +26 -0
- data/doc/default.css +293 -0
- data/doc/default.template +78 -0
- data/doc/index.page +89 -0
- data/doc/installation.page +90 -0
- data/doc/news.feed +10 -0
- data/doc/news.page +27 -0
- data/doc/quickref.page +474 -0
- data/doc/syntax.page +1089 -0
- data/doc/tests.page +44 -0
- data/doc/virtual +2 -0
- data/lib/kramdown.rb +23 -0
- data/lib/kramdown/converter.rb +215 -0
- data/lib/kramdown/document.rb +150 -0
- data/lib/kramdown/error.rb +27 -0
- data/lib/kramdown/extension.rb +73 -0
- data/lib/kramdown/parser.rb +1056 -0
- data/lib/kramdown/parser/registry.rb +62 -0
- data/setup.rb +1585 -0
- data/test/run_tests.rb +58 -0
- data/test/test_files.rb +39 -0
- data/test/testcases/block/01_blank_line/spaces.html +1 -0
- data/test/testcases/block/01_blank_line/spaces.text +3 -0
- data/test/testcases/block/01_blank_line/tabs.html +1 -0
- data/test/testcases/block/01_blank_line/tabs.text +6 -0
- data/test/testcases/block/02_eob/beginning.html +1 -0
- data/test/testcases/block/02_eob/beginning.text +3 -0
- data/test/testcases/block/02_eob/end.html +1 -0
- data/test/testcases/block/02_eob/end.text +3 -0
- data/test/testcases/block/02_eob/middle.html +1 -0
- data/test/testcases/block/02_eob/middle.text +5 -0
- data/test/testcases/block/03_paragraph/indented.html +18 -0
- data/test/testcases/block/03_paragraph/indented.text +19 -0
- data/test/testcases/block/03_paragraph/no_newline_at_end.html +5 -0
- data/test/testcases/block/03_paragraph/no_newline_at_end.text +5 -0
- data/test/testcases/block/03_paragraph/one_para.html +1 -0
- data/test/testcases/block/03_paragraph/one_para.text +1 -0
- data/test/testcases/block/03_paragraph/two_para.html +4 -0
- data/test/testcases/block/03_paragraph/two_para.text +4 -0
- data/test/testcases/block/04_header/atx_header.html +26 -0
- data/test/testcases/block/04_header/atx_header.text +24 -0
- data/test/testcases/block/04_header/atx_header_no_newline_at_end.html +1 -0
- data/test/testcases/block/04_header/atx_header_no_newline_at_end.text +1 -0
- data/test/testcases/block/04_header/setext_header.html +25 -0
- data/test/testcases/block/04_header/setext_header.text +27 -0
- data/test/testcases/block/04_header/setext_header_no_newline_at_end.html +1 -0
- data/test/testcases/block/04_header/setext_header_no_newline_at_end.text +2 -0
- data/test/testcases/block/04_header/with_auto_ids.html +17 -0
- data/test/testcases/block/04_header/with_auto_ids.options +1 -0
- data/test/testcases/block/04_header/with_auto_ids.text +19 -0
- data/test/testcases/block/05_blockquote/indented.html +25 -0
- data/test/testcases/block/05_blockquote/indented.text +14 -0
- data/test/testcases/block/05_blockquote/nested.html +9 -0
- data/test/testcases/block/05_blockquote/nested.text +5 -0
- data/test/testcases/block/05_blockquote/no_newline_at_end.html +4 -0
- data/test/testcases/block/05_blockquote/no_newline_at_end.text +2 -0
- data/test/testcases/block/05_blockquote/only_first_quoted.html +8 -0
- data/test/testcases/block/05_blockquote/only_first_quoted.text +4 -0
- data/test/testcases/block/05_blockquote/with_code_blocks.html +15 -0
- data/test/testcases/block/05_blockquote/with_code_blocks.text +11 -0
- data/test/testcases/block/06_codeblock/error.html +4 -0
- data/test/testcases/block/06_codeblock/error.text +4 -0
- data/test/testcases/block/06_codeblock/no_newline_at_end.html +2 -0
- data/test/testcases/block/06_codeblock/no_newline_at_end.text +1 -0
- data/test/testcases/block/06_codeblock/normal.html +13 -0
- data/test/testcases/block/06_codeblock/normal.text +10 -0
- data/test/testcases/block/06_codeblock/tilde_syntax.html +7 -0
- data/test/testcases/block/06_codeblock/tilde_syntax.text +9 -0
- data/test/testcases/block/06_codeblock/whitespace.html +3 -0
- data/test/testcases/block/06_codeblock/whitespace.text +3 -0
- data/test/testcases/block/06_codeblock/with_blank_line.html +13 -0
- data/test/testcases/block/06_codeblock/with_blank_line.text +11 -0
- data/test/testcases/block/06_codeblock/with_eob_marker.html +6 -0
- data/test/testcases/block/06_codeblock/with_eob_marker.text +5 -0
- data/test/testcases/block/07_horizontal_rule/error.html +7 -0
- data/test/testcases/block/07_horizontal_rule/error.text +7 -0
- data/test/testcases/block/07_horizontal_rule/normal.html +19 -0
- data/test/testcases/block/07_horizontal_rule/normal.text +19 -0
- data/test/testcases/block/08_list/escaping.html +17 -0
- data/test/testcases/block/08_list/escaping.text +17 -0
- data/test/testcases/block/08_list/list_and_hr.html +9 -0
- data/test/testcases/block/08_list/list_and_hr.text +5 -0
- data/test/testcases/block/08_list/list_and_others.html +38 -0
- data/test/testcases/block/08_list/list_and_others.text +25 -0
- data/test/testcases/block/08_list/mixed.html +111 -0
- data/test/testcases/block/08_list/mixed.text +66 -0
- data/test/testcases/block/08_list/nested.html +17 -0
- data/test/testcases/block/08_list/nested.text +7 -0
- data/test/testcases/block/08_list/other_first_element.html +39 -0
- data/test/testcases/block/08_list/other_first_element.text +18 -0
- data/test/testcases/block/08_list/simple_ol.html +19 -0
- data/test/testcases/block/08_list/simple_ol.text +13 -0
- data/test/testcases/block/08_list/simple_ul.html +61 -0
- data/test/testcases/block/08_list/simple_ul.text +43 -0
- data/test/testcases/block/08_list/single_item.html +3 -0
- data/test/testcases/block/08_list/single_item.text +1 -0
- data/test/testcases/block/08_list/special_cases.html +29 -0
- data/test/testcases/block/08_list/special_cases.text +19 -0
- data/test/testcases/block/09_html/auto_parse_block_html.html +17 -0
- data/test/testcases/block/09_html/auto_parse_block_html.options +1 -0
- data/test/testcases/block/09_html/auto_parse_block_html.text +14 -0
- data/test/testcases/block/09_html/comment.html +12 -0
- data/test/testcases/block/09_html/comment.text +12 -0
- data/test/testcases/block/09_html/filtered_html.html +1 -0
- data/test/testcases/block/09_html/filtered_html.options +1 -0
- data/test/testcases/block/09_html/filtered_html.text +1 -0
- data/test/testcases/block/09_html/html_and_codeblocks.html +15 -0
- data/test/testcases/block/09_html/html_and_codeblocks.options +1 -0
- data/test/testcases/block/09_html/html_and_codeblocks.text +13 -0
- data/test/testcases/block/09_html/invalid_html_1.html +5 -0
- data/test/testcases/block/09_html/invalid_html_1.text +5 -0
- data/test/testcases/block/09_html/invalid_html_2.html +6 -0
- data/test/testcases/block/09_html/invalid_html_2.text +5 -0
- data/test/testcases/block/09_html/parse_as_raw.html +26 -0
- data/test/testcases/block/09_html/parse_as_raw.text +16 -0
- data/test/testcases/block/09_html/parse_as_span.html +12 -0
- data/test/testcases/block/09_html/parse_as_span.text +7 -0
- data/test/testcases/block/09_html/processing_instruction.html +12 -0
- data/test/testcases/block/09_html/processing_instruction.text +12 -0
- data/test/testcases/block/09_html/simple.html +78 -0
- data/test/testcases/block/09_html/simple.text +56 -0
- data/test/testcases/block/10_ald/simple.html +2 -0
- data/test/testcases/block/10_ald/simple.text +8 -0
- data/test/testcases/block/11_ial/simple.html +17 -0
- data/test/testcases/block/11_ial/simple.text +25 -0
- data/test/testcases/block/12_extension/comment.html +5 -0
- data/test/testcases/block/12_extension/comment.text +11 -0
- data/test/testcases/block/12_extension/ignored.html +6 -0
- data/test/testcases/block/12_extension/ignored.text +11 -0
- data/test/testcases/block/12_extension/kdoptions.html +15 -0
- data/test/testcases/block/12_extension/kdoptions.text +18 -0
- data/test/testcases/block/12_extension/kdoptions2.html +10 -0
- data/test/testcases/block/12_extension/kdoptions2.text +5 -0
- data/test/testcases/block/12_extension/nokramdown.html +6 -0
- data/test/testcases/block/12_extension/nokramdown.text +11 -0
- data/test/testcases/span/01_link/empty.html +3 -0
- data/test/testcases/span/01_link/empty.text +3 -0
- data/test/testcases/span/01_link/image_in_a.html +5 -0
- data/test/testcases/span/01_link/image_in_a.text +5 -0
- data/test/testcases/span/01_link/imagelinks.html +12 -0
- data/test/testcases/span/01_link/imagelinks.text +14 -0
- data/test/testcases/span/01_link/inline.html +40 -0
- data/test/testcases/span/01_link/inline.text +42 -0
- data/test/testcases/span/01_link/link_defs.html +8 -0
- data/test/testcases/span/01_link/link_defs.text +22 -0
- data/test/testcases/span/01_link/links_with_angle_brackets.html +3 -0
- data/test/testcases/span/01_link/links_with_angle_brackets.text +3 -0
- data/test/testcases/span/01_link/reference.html +32 -0
- data/test/testcases/span/01_link/reference.text +42 -0
- data/test/testcases/span/02_emphasis/empty.html +3 -0
- data/test/testcases/span/02_emphasis/empty.text +3 -0
- data/test/testcases/span/02_emphasis/errors.html +9 -0
- data/test/testcases/span/02_emphasis/errors.text +9 -0
- data/test/testcases/span/02_emphasis/nesting.html +34 -0
- data/test/testcases/span/02_emphasis/nesting.text +30 -0
- data/test/testcases/span/02_emphasis/normal.html +42 -0
- data/test/testcases/span/02_emphasis/normal.text +42 -0
- data/test/testcases/span/03_codespan/empty.html +5 -0
- data/test/testcases/span/03_codespan/empty.text +5 -0
- data/test/testcases/span/03_codespan/errors.html +1 -0
- data/test/testcases/span/03_codespan/errors.text +1 -0
- data/test/testcases/span/03_codespan/normal.html +16 -0
- data/test/testcases/span/03_codespan/normal.text +16 -0
- data/test/testcases/span/04_footnote/definitions.html +14 -0
- data/test/testcases/span/04_footnote/definitions.text +18 -0
- data/test/testcases/span/04_footnote/footnote_nr.html +12 -0
- data/test/testcases/span/04_footnote/footnote_nr.options +1 -0
- data/test/testcases/span/04_footnote/footnote_nr.text +4 -0
- data/test/testcases/span/04_footnote/markers.html +46 -0
- data/test/testcases/span/04_footnote/markers.text +26 -0
- data/test/testcases/span/05_html/normal.html +17 -0
- data/test/testcases/span/05_html/normal.text +17 -0
- data/test/testcases/span/autolinks/url_links.html +9 -0
- data/test/testcases/span/autolinks/url_links.text +9 -0
- data/test/testcases/span/escaped_chars/normal.html +33 -0
- data/test/testcases/span/escaped_chars/normal.text +33 -0
- data/test/testcases/span/ial/simple.html +5 -0
- data/test/testcases/span/ial/simple.text +5 -0
- data/test/testcases/span/line_breaks/normal.html +11 -0
- data/test/testcases/span/line_breaks/normal.text +11 -0
- data/test/testcases/span/text_substitutions/entities.html +4 -0
- data/test/testcases/span/text_substitutions/entities.text +4 -0
- data/test/testcases/span/text_substitutions/greaterthan.html +1 -0
- data/test/testcases/span/text_substitutions/greaterthan.text +1 -0
- data/test/testcases/span/text_substitutions/lowerthan.html +1 -0
- data/test/testcases/span/text_substitutions/lowerthan.text +1 -0
- data/test/testcases/span/text_substitutions/typography.html +3 -0
- data/test/testcases/span/text_substitutions/typography.text +3 -0
- metadata +259 -0
data/test/run_tests.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
#--
|
4
|
+
# Copyright (C) 2009 Thomas Leitner <t_leitner@gmx.at>
|
5
|
+
#
|
6
|
+
# This file is part of kramdown.
|
7
|
+
#
|
8
|
+
# kramdown is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
#++
|
21
|
+
#
|
22
|
+
|
23
|
+
$:.unshift File.dirname(__FILE__) + '/../lib'
|
24
|
+
require 'kramdown'
|
25
|
+
require 'test/unit/assertions'
|
26
|
+
require 'yaml'
|
27
|
+
|
28
|
+
include Test::Unit::Assertions
|
29
|
+
|
30
|
+
arg = ARGV[0] || File.join(File.dirname(__FILE__), 'testcases')
|
31
|
+
|
32
|
+
arg = if File.directory?(arg)
|
33
|
+
File.join(arg, '**/*.text')
|
34
|
+
else
|
35
|
+
arg + '.text'
|
36
|
+
end
|
37
|
+
|
38
|
+
width = ((size = %x{stty size 2>/dev/null}).length > 0 ? size.split.last.to_i : 72) rescue 72
|
39
|
+
width -= 8
|
40
|
+
fwidth = 0
|
41
|
+
Dir[arg].each {|f| fwidth = [fwidth, f.length + 10].max }.each do |file|
|
42
|
+
print(('Testing ' + file + ' ').ljust([fwidth, width].min))
|
43
|
+
$stdout.flush
|
44
|
+
|
45
|
+
html_file = file.sub('.text', '.html')
|
46
|
+
opts_file = file.sub('.text', '.options')
|
47
|
+
options = File.exist?(opts_file) ? YAML::load(File.read(opts_file)) : {}
|
48
|
+
doc = Kramdown::Document.new(File.read(file), options)
|
49
|
+
begin
|
50
|
+
assert_equal(File.read(html_file), doc.to_html)
|
51
|
+
puts 'PASSED'
|
52
|
+
rescue Exception => e
|
53
|
+
puts ' FAILED'
|
54
|
+
puts $!.message if $VERBOSE
|
55
|
+
puts $!.backtrace if $DEBUG
|
56
|
+
end
|
57
|
+
puts "Warnings:\n" + doc.warnings.join("\n") if !doc.warnings.empty? && $VERBOSE
|
58
|
+
end
|
data/test/test_files.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
#--
|
4
|
+
# Copyright (C) 2009 Thomas Leitner <t_leitner@gmx.at>
|
5
|
+
#
|
6
|
+
# This file is part of kramdown.
|
7
|
+
#
|
8
|
+
# kramdown is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
#++
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'test/unit'
|
24
|
+
require 'kramdown'
|
25
|
+
require 'yaml'
|
26
|
+
|
27
|
+
class TestFiles < Test::Unit::TestCase
|
28
|
+
|
29
|
+
Dir[File.dirname(__FILE__) + '/testcases/**/*.text'].each do |file|
|
30
|
+
define_method('test_' + file.tr('.', '_')) do
|
31
|
+
html_file = file.sub('.text', '.html')
|
32
|
+
opts_file = file.sub('.text', '.options')
|
33
|
+
options = File.exist?(opts_file) ? YAML::load(File.read(opts_file)) : {}
|
34
|
+
doc = Kramdown::Document.new(File.read(file), options)
|
35
|
+
assert_equal(File.read(html_file), doc.to_html, "Failed test #{file}")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<p>This is a para.</p>
|
2
|
+
|
3
|
+
<p>This is a para.</p>
|
4
|
+
|
5
|
+
<p>This is a para.</p>
|
6
|
+
|
7
|
+
<p>This is a para.</p>
|
8
|
+
|
9
|
+
<pre><code>This is a code block.
|
10
|
+
</code></pre>
|
11
|
+
|
12
|
+
<p>And this is another.</p>
|
13
|
+
|
14
|
+
<p>A para
|
15
|
+
with
|
16
|
+
mixed
|
17
|
+
indents.
|
18
|
+
and with much indent</p>
|
@@ -0,0 +1 @@
|
|
1
|
+
<p>This is just a normal paragraph.</p>
|
@@ -0,0 +1 @@
|
|
1
|
+
This is just a normal paragraph.
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<h1>This is a header</h1>
|
2
|
+
|
3
|
+
<h2>This is a header</h2>
|
4
|
+
|
5
|
+
<h3>This is a header</h3>
|
6
|
+
|
7
|
+
<h4>This is a header</h4>
|
8
|
+
|
9
|
+
<h5>This is a header</h5>
|
10
|
+
|
11
|
+
<h6>This is a header</h6>
|
12
|
+
|
13
|
+
<h2>Header</h2>
|
14
|
+
<blockquote>
|
15
|
+
<p>blockquote</p>
|
16
|
+
</blockquote>
|
17
|
+
|
18
|
+
<h6>header</h6>
|
19
|
+
<p>paragraph</p>
|
20
|
+
|
21
|
+
<blockquote>
|
22
|
+
<p>blockquote</p>
|
23
|
+
</blockquote>
|
24
|
+
<p>### not a header</p>
|
25
|
+
|
26
|
+
<h3>Last</h3>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# This is a header
|
2
|
+
|
3
|
+
## This is a header
|
4
|
+
|
5
|
+
### This is a header
|
6
|
+
|
7
|
+
#### This is a header
|
8
|
+
|
9
|
+
##### This is a header
|
10
|
+
|
11
|
+
###### This is a header
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
##Header #####
|
16
|
+
> blockquote
|
17
|
+
|
18
|
+
###### header
|
19
|
+
paragraph
|
20
|
+
|
21
|
+
> blockquote
|
22
|
+
### not a header
|
23
|
+
|
24
|
+
### Last
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>header</h1>
|
@@ -0,0 +1 @@
|
|
1
|
+
# header
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<h2>test</h2>
|
2
|
+
|
3
|
+
<h1>test2</h1>
|
4
|
+
|
5
|
+
<h2>test</h2>
|
6
|
+
<p>para</p>
|
7
|
+
|
8
|
+
<pre><code> header
|
9
|
+
</code></pre>
|
10
|
+
<p>=</p>
|
11
|
+
|
12
|
+
<p>=</p>
|
13
|
+
|
14
|
+
<p>This is a para.
|
15
|
+
With two lines.
|
16
|
+
And not a header.
|
17
|
+
=================</p>
|
18
|
+
|
19
|
+
<blockquote>
|
20
|
+
<p>Blockquote.</p>
|
21
|
+
</blockquote>
|
22
|
+
<p>Not a Header</p>
|
23
|
+
<hr />
|
24
|
+
|
25
|
+
<h2>header</h2>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
test
|
2
|
+
-
|
3
|
+
|
4
|
+
test2
|
5
|
+
=========
|
6
|
+
|
7
|
+
test
|
8
|
+
-
|
9
|
+
para
|
10
|
+
|
11
|
+
header
|
12
|
+
=
|
13
|
+
|
14
|
+
|
15
|
+
=
|
16
|
+
|
17
|
+
This is a para.
|
18
|
+
With two lines.
|
19
|
+
And not a header.
|
20
|
+
=================
|
21
|
+
|
22
|
+
> Blockquote.
|
23
|
+
Not a Header
|
24
|
+
---
|
25
|
+
|
26
|
+
header
|
27
|
+
------
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>header</h1>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<h1 id="this-is-a-header">This is a header</h1>
|
2
|
+
|
3
|
+
<h2 id="another-one-1-here">12. Another one-1-here</h2>
|
4
|
+
|
5
|
+
<h3 id="do--it-now">Do ^& it now</h3>
|
6
|
+
|
7
|
+
<h1 id="hallo">Hallo</h1>
|
8
|
+
|
9
|
+
<h2 id="not-now">Not now</h2>
|
10
|
+
|
11
|
+
<h1 id="hallo-1">Hallo</h1>
|
12
|
+
|
13
|
+
<h1 id="section">23232</h1>
|
14
|
+
|
15
|
+
<h1 id="section-1">33333</h1>
|
16
|
+
|
17
|
+
<h2 id="hallo-2">hallO</h2>
|
@@ -0,0 +1 @@
|
|
1
|
+
:auto_ids: true
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<blockquote>
|
2
|
+
<p>A normal blockquote.</p>
|
3
|
+
</blockquote>
|
4
|
+
|
5
|
+
<blockquote>
|
6
|
+
<p>A normal blockquote.</p>
|
7
|
+
</blockquote>
|
8
|
+
|
9
|
+
<blockquote>
|
10
|
+
<p>A normal blockquote.</p>
|
11
|
+
</blockquote>
|
12
|
+
|
13
|
+
<blockquote>
|
14
|
+
<p>A normal blockquote.</p>
|
15
|
+
</blockquote>
|
16
|
+
|
17
|
+
<pre><code>> A codeblock
|
18
|
+
</code></pre>
|
19
|
+
|
20
|
+
<blockquote>
|
21
|
+
<p>Blockquote
|
22
|
+
with
|
23
|
+
mixed
|
24
|
+
indents.</p>
|
25
|
+
</blockquote>
|