diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/Tests/Old.hs | 5 | ||||
| -rw-r--r-- | test/djot-reader.djot | 749 | ||||
| -rw-r--r-- | test/djot-reader.native | 986 | ||||
| -rw-r--r-- | test/tables.djot | 54 | ||||
| -rw-r--r-- | test/writer.djot | 749 |
5 files changed, 2543 insertions, 0 deletions
diff --git a/test/Tests/Old.hs b/test/Tests/Old.hs index 04855455a..97c1eb8a7 100644 --- a/test/Tests/Old.hs +++ b/test/Tests/Old.hs @@ -83,6 +83,11 @@ tests pandocPath = , test' "reader" ["-r", "textile", "-w", "native", "-s"] "textile-reader.textile" "textile-reader.native" ] + , testGroup "djot" + [ testGroup "writer" $ writerTests' "djot" + , test' "reader" ["-f", "djot", "-t" ,"native", "-s"] + "djot-reader.djot" "djot-reader.native" + ] , testGroup "docbook" [ testGroup "writer" $ writerTests' "docbook4" , test' "reader" ["-r", "docbook", "-w", "native", "-s"] diff --git a/test/djot-reader.djot b/test/djot-reader.djot new file mode 100644 index 000000000..1faef6d4e --- /dev/null +++ b/test/djot-reader.djot @@ -0,0 +1,749 @@ +# Pandoc Test Suite + +John MacFarlane +Anonymous + +July 17, 2006 + +This is a set of tests for pandoc. Most of them are adapted from John Gruber's +markdown test suite. + +* * * * + +{#headers} +# Headers + +{#level-2-with-an-embedded-link} +## Level 2 with an [embedded link](/url) + +{#level-3-with-emphasis} +### Level 3 with _emphasis_ + +{#level-4} +#### Level 4 + +{#level-5} +##### Level 5 + +{#level-1} +# Level 1 + +{#level-2-with-emphasis} +## Level 2 with _emphasis_ + +{#level-3} +### Level 3 + +with no blank line + +{#level-2} +## Level 2 + +with no blank line + +* * * * + +{#paragraphs} +# Paragraphs + +Here's a regular paragraph. + +In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. +Because a hard-wrapped line in the middle of a paragraph looked like a list +item. + +Here's one with a bullet. \* criminey. + +There should be a hard line break\ +here. + +* * * * + +{#block-quotes} +# Block Quotes + +E-mail style: + +> This is a block quote. It is pretty short. + +> Code in a block quote: +> +> ``` +> sub status { +> print "working"; +> } +> ``` +> +> A list: +> +> 1. item one +> 2. item two +> +> Nested block quotes: +> +> > nested +> +> > nested + +This should not be a block quote: 2 \> 1. + +And a following paragraph. + +* * * * + +{#code-blocks} +# Code Blocks + +Code: + +``` +---- (should be four hyphens) + +sub status { + print "working"; +} + +this code block is indented by one tab +``` + +And: + +``` + this code block is indented by two tabs + +These should not be escaped: \$ \\ \> \[ \{ +``` + +* * * * + +{#lists} +# Lists + +{#unordered} +## Unordered + +Asterisks tight: + +- asterisk 1 +- asterisk 2 +- asterisk 3 + +Asterisks loose: + +- asterisk 1 + +- asterisk 2 + +- asterisk 3 + +Pluses tight: + +- Plus 1 +- Plus 2 +- Plus 3 + +Pluses loose: + +- Plus 1 + +- Plus 2 + +- Plus 3 + +Minuses tight: + +- Minus 1 +- Minus 2 +- Minus 3 + +Minuses loose: + +- Minus 1 + +- Minus 2 + +- Minus 3 + +{#ordered} +## Ordered + +Tight: + +1. First +2. Second +3. Third + +and: + +1. One +2. Two +3. Three + +Loose using tabs: + +1. First + +2. Second + +3. Third + +and using spaces: + +1. One + +2. Two + +3. Three + +Multiple paragraphs: + +1. Item 1, graf one. + + Item 1. graf two. The quick brown fox jumped over the lazy dog's back. + +2. Item 2. + +3. Item 3. + +{#nested} +## Nested + +- Tab + + - Tab + + - Tab + +Here's another: + +1. First +2. Second: + + - Fee + - Fie + - Foe +3. Third + +Same thing but with paragraphs: + +1. First + +2. Second: + + - Fee + - Fie + - Foe + +3. Third + +{#tabs-and-spaces} +## Tabs and spaces + +- this is a list item indented with tabs + +- this is a list item indented with spaces + + - this is an example list item indented with tabs + + - this is an example list item indented with spaces + +{#fancy-list-markers} +## Fancy list markers + +(2) begins with 2 + +(3) and now 3 + + with a continuation + + iv. sublist with roman numerals, starting with 4 + v. more items + + (A) a subsublist + (B) a subsublist + +Nesting: + +A. Upper Alpha + + I. Upper Roman. + + (6) Decimal start with 6 + + c) Lower alpha with paren + +Autonumbering: + +1. Autonumber. +2. More. + + 1. Nested. + +Should not be a list item: + +M.A. 2007 + +B. Williams + +* * * * + +{#definition-lists} +# Definition Lists + +Tight using spaces: + +: apple + + red fruit +: orange + + orange fruit +: banana + + yellow fruit + +Tight using tabs: + +: apple + + red fruit +: orange + + orange fruit +: banana + + yellow fruit + +Loose: + +: apple + + red fruit + +: orange + + orange fruit + +: banana + + yellow fruit + +Multiple blocks with italics: + +: _apple_ + + red fruit + + contains seeds, crisp, pleasant to taste + +: _orange_ + + orange fruit + + ``` + { orange code block } + ``` + + > orange block quote + +Multiple definitions, tight: + +: apple + + red fruit + + computer +: orange + + orange fruit + + bank + +Multiple definitions, loose: + +: apple + + red fruit + + computer + +: orange + + orange fruit + + bank + +Blank line after term, indented marker, alternate markers: + +: apple + + red fruit + + computer + +: orange + + orange fruit + + 1. sublist + 2. sublist + +{#html-blocks} +# HTML Blocks + +Simple block on one line: + +::: +foo + +::: + +And nested without indentation: + +:::::: +:::: +::: +foo + +::: + +:::: + +::: +bar + +::: + +:::::: + +Interpreted markdown in a table: + +This is _emphasized_ + +And this is *strong* + +Here's a simple block: + +::: +foo + +::: + +This should be a code block, though: + +``` +<div> + foo +</div> +``` + +As should this: + +``` +<div>foo</div> +``` + +Now, nested: + +::::: +:::: +::: +foo + +::: + +:::: + +::::: + +This should just be an HTML comment: + +Multiline: + +Code block: + +``` +<!-- Comment --> +``` + +Just plain comment, with trailing spaces on the line: + +Code: + +``` +<hr /> +``` + +Hr's: + +* * * * + +{#inline-markup} +# Inline Markup + +This is _emphasized_, and so _is this_. + +This is *strong*, and so *is this*. + +An _[emphasized link](/url)_. + +*_This is strong and em._* + +So is *_this_* word. + +*_This is strong and em._* + +So is *_this_* word. + +This is code: `>`, `$`, `\`, `\$`, `<html>`. + +{-This is _strikeout_.-} + +Superscripts: a^bc^d a^_hello_^ a^hello there^. + +Subscripts: H~2~O, H~23~O, H~many of them~O. + +These should not be superscripts or subscripts, because of the unescaped spaces: +a\^b c\^d, a\~b c\~d. + +* * * * + +{#smart-quotes-ellipses-dashes} +# Smart quotes, ellipses, dashes + +"Hello," said the spider. "'Shelob' is my name." + +'A', 'B', and 'C' are letters. + +'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' + +'He said, "I want to go."' Were you alive in the 70's? + +Here is some quoted '`code`' and a "[quoted +link](http://example.com/?foo=1&bar=2)". + +Some dashes: one---two --- three---four --- five. + +Dashes between numbers: 5--7, 255--66, 1987--1999. + +Ellipses...and...and.... + +* * * * + +{#latex} +# LaTeX + +- +- $`2+2=4` +- $`x \in y` +- $`\alpha \wedge \omega` +- $`223` +- $`p`-Tree +- Here's some display math: + $$`\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}` +- Here's one that has a line break in it: $`\alpha + \omega \times x^2`. + +These shouldn't be math: + +- To get the famous equation, write `$e = mc^2$`. +- $22,000 is a _lot_ of money. So is $34,000. (It worked if "lot" is + emphasized.) +- Shoes ($20) and socks ($5). +- Escaped `$`\: $73 _this should be emphasized_ 23$. + +Here's a LaTeX table: + +* * * * + +{#special-characters} +# Special Characters + +Here is some unicode: + +- I hat: Î +- o umlaut: ö +- section: § +- set membership: ∈ +- copyright: © + +AT&T has an ampersand in their name. + +AT&T is another way to write it. + +This & that. + +4 \< 5. + +6 \> 5. + +Backslash: \\ + +Backtick: \` + +Asterisk: \* + +Underscore: \_ + +Left brace: \{ + +Right brace: \} + +Left bracket: \[ + +Right bracket: \] + +Left paren: ( + +Right paren: ) + +Greater-than: \> + +Hash: # + +Period: . + +Bang: \! + +Plus: + + +Minus: - + +* * * * + +{#links} +# Links + +{#explicit} +## Explicit + +Just a [URL](/url/). + +[URL and title](/url/){title="title"}. + +[URL and title](/url/){title="title preceded by two spaces"}. + +[URL and title](/url/){title="title preceded by a tab"}. + +[URL and title](/url/){title="title with \"quotes\" in it"} + +[URL and title](/url/){title="title with single quotes"} + +[with\_underscore](/url/with_underscore) + +[Email link](mailto:[email protected]) + +[Empty](). + +{#reference} +## Reference + +Foo [bar](/url/). + +With [embedded \[brackets\]](/url/). + +[b](/url/) by itself should be a link. + +Indented [once](/url). + +Indented [twice](/url). + +Indented [thrice](/url). + +This should \[not\]\[\] be a link. + +``` +[not]: /url +``` + +Foo [bar](/url/){title="Title with \"quotes\" inside"}. + +Foo [biz](/url/){title="Title with \"quote\" inside"}. + +{#with-ampersands} +## With ampersands + +Here's a [link with an ampersand in the URL](http://example.com/?foo=1&bar=2). + +Here's a link with an amersand in the link text: +[AT&T](http://att.com/){title="AT&T"}. + +Here's an [inline link](/script?foo=1&bar=2). + +Here's an [inline link in pointy braces](/script?foo=1&bar=2). + +{#autolinks} +## Autolinks + +With an ampersand: <http://example.com/?foo=1&bar=2> + +- In a list? +- <http://example.com/> +- It should. + +An e-mail address: <[email protected]> + +> Blockquoted: <http://example.com/> + +Auto-links should not occur here: `<http://example.com/>` + +``` +or here: <http://example.com/> +``` + +* * * * + +{#images} +# Images + +From "Voyage dans la Lune" by Georges Melies (1902): + +:::: +{title="Voyage dans la Lune"} + +{.caption} +::: +lalune + +::: + +:::: + +Here is a movie  icon. + +* * * * + +{#footnotes} +# Footnotes + +Here is a footnote reference,[^1] and another.[^2] This should _not_ be a +footnote reference, because it contains a space.\[\^my note\] Here is an inline +note.[^3] + +> Notes can go in quotes.[^4] + +1. And in list items.[^5] + +This paragraph should not be part of the note, as it is not indented. + +[^1]: Here is the footnote. It can go anywhere after the footnote reference. It + need not be placed at the end of the document. + +[^2]: Here's the long note. This one contains multiple blocks. + + Subsequent blocks are indented to show that they belong to the footnote (as + with list items). + + ``` + { <code> } + ``` + + If you want, you can indent every line, but you can also be lazy and just + indent the first line of each block. + +[^3]: This is _easier_ to type. Inline notes may contain + [links](http://google.com) and `]` verbatim characters, as well as + \[bracketed text\]. + +[^4]: In quote. + +[^5]: In list. diff --git a/test/djot-reader.native b/test/djot-reader.native new file mode 100644 index 000000000..528c34e04 --- /dev/null +++ b/test/djot-reader.native @@ -0,0 +1,986 @@ +Pandoc + Meta { unMeta = fromList [] } + [ Div + ( "Pandoc-Test-Suite" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 1 ( "" , [] , [] ) [ Str "Pandoc Test Suite" ] + , Para + [ Str "John MacFarlane" , SoftBreak , Str "Anonymous" ] + , Para [ Str "July 17, 2006" ] + , Para + [ Str + "This is a set of tests for pandoc. Most of them are adapted from John Gruber\8217s" + , SoftBreak + , Str "markdown test suite." + ] + , HorizontalRule + ] + , Div + ( "headers" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Headers" ] + , Div + ( "level-2-with-an-embedded-link" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header + 2 + ( "" , [] , [] ) + [ Str "Level 2 with an " + , Link + ( "" , [] , [] ) + [ Str "embedded link" ] + ( "/url" , "" ) + ] + , Div + ( "level-3-with-emphasis" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header + 3 + ( "" , [] , [] ) + [ Str "Level 3 with " , Emph [ Str "emphasis" ] ] + , Div + ( "level-4" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 4 ( "" , [] , [] ) [ Str "Level 4" ] + , Div + ( "level-5" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 5 ( "" , [] , [] ) [ Str "Level 5" ] ] + ] + ] + ] + ] + , Div + ( "level-1" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Level 1" ] + , Div + ( "level-2-with-emphasis" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header + 2 + ( "" , [] , [] ) + [ Str "Level 2 with " , Emph [ Str "emphasis" ] ] + , Div + ( "level-3" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 3 ( "" , [] , [] ) [ Str "Level 3" ] + , Para [ Str "with no blank line" ] + ] + ] + , Div + ( "level-2" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 2 ( "" , [] , [] ) [ Str "Level 2" ] + , Para [ Str "with no blank line" ] + , HorizontalRule + ] + ] + , Div + ( "paragraphs" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Paragraphs" ] + , Para [ Str "Here\8217s a regular paragraph." ] + , Para + [ Str + "In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item." + , SoftBreak + , Str + "Because a hard-wrapped line in the middle of a paragraph looked like a list" + , SoftBreak + , Str "item." + ] + , Para [ Str "Here\8217s one with a bullet. * criminey." ] + , Para + [ Str "There should be a hard line break" + , LineBreak + , Str "here." + ] + , HorizontalRule + ] + , Div + ( "block-quotes" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Block Quotes" ] + , Para [ Str "E-mail style:" ] + , BlockQuote + [ Para [ Str "This is a block quote. It is pretty short." ] + ] + , BlockQuote + [ Para [ Str "Code in a block quote:" ] + , CodeBlock + ( "" , [ "" ] , [] ) + "sub status {\nprint \"working\";\n}\n" + , Para [ Str "A list:" ] + , OrderedList + ( 1 , Decimal , Period ) + [ [ Plain [ Str "item one" ] ] + , [ Plain [ Str "item two" ] ] + ] + , BlockQuote [ Para [ Str "nested" ] ] + , BlockQuote [ Para [ Str "nested" ] ] + ] + , Para [ Str "This should not be a block quote: 2 > 1." ] + , Para [ Str "And a following paragraph." ] + , HorizontalRule + ] + , Div + ( "code-blocks" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Code Blocks" ] + , Para [ Str "Code:" ] + , CodeBlock + ( "" , [ "" ] , [] ) + "---- (should be four hyphens)\n\nsub status {\n print \"working\";\n}\n\nthis code block is indented by one tab\n" + , Para [ Str "And:" ] + , CodeBlock + ( "" , [ "" ] , [] ) + " this code block is indented by two tabs\n\nThese should not be escaped: \\$ \\\\ \\> \\[ \\{\n" + , HorizontalRule + ] + , Div + ( "lists" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Lists" ] + , Div + ( "unordered" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 2 ( "" , [] , [] ) [ Str "Unordered" ] + , Para [ Str "Asterisks tight:" ] + , BulletList + [ [ Para [ Str "asterisk 1" ] ] + , [ Para [ Str "asterisk 2" ] ] + , [ Para [ Str "asterisk 3" ] ] + , [ Para [ Str "asterisk 1" ] ] + , [ Para [ Str "asterisk 2" ] ] + , [ Para [ Str "asterisk 3" ] ] + , [ Para [ Str "Plus 1" ] ] + , [ Para [ Str "Plus 2" ] ] + , [ Para [ Str "Plus 3" ] ] + , [ Para [ Str "Plus 1" ] ] + , [ Para [ Str "Plus 2" ] ] + , [ Para [ Str "Plus 3" ] ] + , [ Para [ Str "Minus 1" ] ] + , [ Para [ Str "Minus 2" ] ] + , [ Para [ Str "Minus 3" ] ] + , [ Para [ Str "Minus 1" ] ] + , [ Para [ Str "Minus 2" ] ] + , [ Para [ Str "Minus 3" ] ] + ] + ] + , Div + ( "ordered" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 2 ( "" , [] , [] ) [ Str "Ordered" ] + , Para [ Str "Tight:" ] + , OrderedList + ( 1 , Decimal , Period ) + [ [ Para [ Str "First" ] ] + , [ Para [ Str "Second" ] ] + , [ Para [ Str "Third" ] ] + , [ Para [ Str "One" ] ] + , [ Para [ Str "Two" ] ] + , [ Para [ Str "Three" ] ] + , [ Para [ Str "First" ] ] + , [ Para [ Str "Second" ] ] + , [ Para [ Str "Third" ] ] + , [ Para [ Str "One" ] ] + , [ Para [ Str "Two" ] ] + , [ Para [ Str "Three" ] ] + , [ Para [ Str "Item 1, graf one." ] + , Para + [ Str + "Item 1. graf two. The quick brown fox jumped over the lazy dog\8217s back." + ] + ] + , [ Para [ Str "Item 2." ] ] + , [ Para [ Str "Item 3." ] ] + ] + ] + , Div + ( "nested" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 2 ( "" , [] , [] ) [ Str "Nested" ] + , BulletList + [ [ Plain [ Str "Tab" ] + , BulletList + [ [ Plain [ Str "Tab" ] + , BulletList [ [ Plain [ Str "Tab" ] ] ] + ] + ] + ] + ] + , OrderedList + ( 1 , Decimal , Period ) + [ [ Para [ Str "First" ] ] + , [ Para [ Str "Second:" ] + , BulletList + [ [ Plain [ Str "Fee" ] ] + , [ Plain [ Str "Fie" ] ] + , [ Plain [ Str "Foe" ] ] + ] + ] + , [ Para [ Str "Third" ] ] + , [ Para [ Str "First" ] ] + , [ Para [ Str "Second:" ] + , BulletList + [ [ Plain [ Str "Fee" ] ] + , [ Plain [ Str "Fie" ] ] + , [ Plain [ Str "Foe" ] ] + ] + ] + , [ Para [ Str "Third" ] ] + ] + ] + , Div + ( "tabs-and-spaces" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 2 ( "" , [] , [] ) [ Str "Tabs and spaces" ] + , BulletList + [ [ Para [ Str "this is a list item indented with tabs" ] + ] + , [ Para + [ Str "this is a list item indented with spaces" ] + , BulletList + [ [ Para + [ Str + "this is an example list item indented with tabs" + ] + ] + , [ Para + [ Str + "this is an example list item indented with spaces" + ] + ] + ] + ] + ] + ] + , Div + ( "fancy-list-markers" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 2 ( "" , [] , [] ) [ Str "Fancy list markers" ] + , OrderedList + ( 2 , Decimal , TwoParens ) + [ [ Para [ Str "begins with 2" ] ] + , [ Para [ Str "and now 3" ] + , Para [ Str "with a continuation" ] + , OrderedList + ( 4 , LowerRoman , Period ) + [ [ Plain + [ Str + "sublist with roman numerals, starting with 4" + ] + ] + , [ Plain [ Str "more items" ] + , OrderedList + ( 1 , UpperAlpha , TwoParens ) + [ [ Plain [ Str "a subsublist" ] ] + , [ Plain [ Str "a subsublist" ] ] + ] + ] + ] + ] + ] + , OrderedList + ( 1 , UpperAlpha , Period ) + [ [ Plain [ Str "Upper Alpha" ] + , OrderedList + ( 1 , UpperRoman , Period ) + [ [ Plain [ Str "Upper Roman." ] + , OrderedList + ( 6 , Decimal , TwoParens ) + [ [ Plain [ Str "Decimal start with 6" ] + , OrderedList + ( 3 , LowerAlpha , OneParen ) + [ [ Plain + [ Str "Lower alpha with paren" ] + ] + ] + ] + ] + ] + ] + ] + ] + , OrderedList + ( 1 , Decimal , Period ) + [ [ Plain [ Str "Autonumber." ] ] + , [ Plain [ Str "More." ] + , OrderedList + ( 1 , Decimal , Period ) + [ [ Plain [ Str "Nested." ] ] ] + ] + ] + , OrderedList + ( 2 , UpperAlpha , Period ) + [ [ Plain [ Str "Williams" ] ] ] + , HorizontalRule + ] + ] + , Div + ( "definition-lists" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 1 ( "" , [] , [] ) [ Str "Definition Lists" ] + , Para [ Str "Tight using spaces:" ] + , DefinitionList + [ ( [ Str "apple" ] , [ [ Para [ Str "red fruit" ] ] ] ) + , ( [ Str "orange" ] , [ [ Para [ Str "orange fruit" ] ] ] ) + , ( [ Str "banana" ] , [ [ Para [ Str "yellow fruit" ] ] ] ) + , ( [ Str "apple" ] , [ [ Para [ Str "red fruit" ] ] ] ) + , ( [ Str "orange" ] , [ [ Para [ Str "orange fruit" ] ] ] ) + , ( [ Str "banana" ] , [ [ Para [ Str "yellow fruit" ] ] ] ) + , ( [ Str "apple" ] , [ [ Para [ Str "red fruit" ] ] ] ) + , ( [ Str "orange" ] , [ [ Para [ Str "orange fruit" ] ] ] ) + , ( [ Str "banana" ] , [ [ Para [ Str "yellow fruit" ] ] ] ) + , ( [ Emph [ Str "apple" ] ] + , [ [ Para [ Str "red fruit" ] + , Para + [ Str "contains seeds, crisp, pleasant to taste" ] + ] + ] + ) + , ( [ Emph [ Str "orange" ] ] + , [ [ Para [ Str "orange fruit" ] + , CodeBlock + ( "" , [ "" ] , [] ) "{ orange code block }\n" + ] + ] + ) + ] + , BlockQuote [ Para [ Str "orange block quote" ] ] + , Para [ Str "Multiple definitions, tight:" ] + , DefinitionList + [ ( [ Str "apple" ] + , [ [ Para [ Str "red fruit" ] , Para [ Str "computer" ] ] ] + ) + , ( [ Str "orange" ] + , [ [ Para [ Str "orange fruit" ] , Para [ Str "bank" ] ] ] + ) + , ( [ Str "apple" ] + , [ [ Para [ Str "red fruit" ] , Para [ Str "computer" ] ] ] + ) + , ( [ Str "orange" ] + , [ [ Para [ Str "orange fruit" ] , Para [ Str "bank" ] ] ] + ) + , ( [ Str "apple" ] + , [ [ Para [ Str "red fruit" ] , Para [ Str "computer" ] ] ] + ) + , ( [ Str "orange" ] + , [ [ Para [ Str "orange fruit" ] + , OrderedList + ( 1 , Decimal , Period ) + [ [ Plain [ Str "sublist" ] ] + , [ Plain [ Str "sublist" ] ] + ] + ] + ] + ) + ] + ] + , Div + ( "html-blocks" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "HTML Blocks" ] + , Para [ Str "Simple block on one line:" ] + , Div ( "" , [] , [] ) [ Para [ Str "foo" ] ] + , Para [ Str "And nested without indentation:" ] + , Div + ( "" , [] , [] ) + [ Div + ( "" , [] , [] ) + [ Div ( "" , [] , [] ) [ Para [ Str "foo" ] ] ] + , Div ( "" , [] , [] ) [ Para [ Str "bar" ] ] + ] + , Para [ Str "Interpreted markdown in a table:" ] + , Para [ Str "This is " , Emph [ Str "emphasized" ] ] + , Para [ Str "And this is " , Strong [ Str "strong" ] ] + , Para [ Str "Here\8217s a simple block:" ] + , Div ( "" , [] , [] ) [ Para [ Str "foo" ] ] + , Para [ Str "This should be a code block, though:" ] + , CodeBlock ( "" , [ "" ] , [] ) "<div>\n foo\n</div>\n" + , Para [ Str "As should this:" ] + , CodeBlock ( "" , [ "" ] , [] ) "<div>foo</div>\n" + , Para [ Str "Now, nested:" ] + , Div + ( "" , [] , [] ) + [ Div + ( "" , [] , [] ) + [ Div ( "" , [] , [] ) [ Para [ Str "foo" ] ] ] + ] + , Para [ Str "This should just be an HTML comment:" ] + , Para [ Str "Multiline:" ] + , Para [ Str "Code block:" ] + , CodeBlock ( "" , [ "" ] , [] ) "<!-- Comment -->\n" + , Para + [ Str + "Just plain comment, with trailing spaces on the line:" + ] + , Para [ Str "Code:" ] + , CodeBlock ( "" , [ "" ] , [] ) "<hr />\n" + , Para [ Str "Hr\8217s:" ] + , HorizontalRule + ] + , Div + ( "inline-markup" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 1 ( "" , [] , [] ) [ Str "Inline Markup" ] + , Para + [ Str "This is " + , Emph [ Str "emphasized" ] + , Str ", and so " + , Emph [ Str "is this" ] + , Str "." + ] + , Para + [ Str "This is " + , Strong [ Str "strong" ] + , Str ", and so " + , Strong [ Str "is this" ] + , Str "." + ] + , Para + [ Str "An " + , Emph + [ Link + ( "" , [] , [] ) + [ Str "emphasized link" ] + ( "/url" , "" ) + ] + , Str "." + ] + , Para [ Strong [ Emph [ Str "This is strong and em." ] ] ] + , Para + [ Str "So is " + , Strong [ Emph [ Str "this" ] ] + , Str " word." + ] + , Para [ Strong [ Emph [ Str "This is strong and em." ] ] ] + , Para + [ Str "So is " + , Strong [ Emph [ Str "this" ] ] + , Str " word." + ] + , Para + [ Str "This is code: " + , Code ( "" , [] , [] ) ">" + , Str ", " + , Code ( "" , [] , [] ) "$" + , Str ", " + , Code ( "" , [] , [] ) "\\`, " + , Str "$" + , Code ( "" , [] , [] ) ", " + , Str "<html>" + , Code ( "" , [] , [] ) "." + ] + , Para + [ Span + ( "" , [ "deleted" ] , [] ) + [ Str "This is " , Emph [ Str "strikeout" ] , Str "." ] + ] + , Para + [ Str "Superscripts: a" + , Superscript [ Str "bc" ] + , Str "d a" + , Superscript [ Emph [ Str "hello" ] ] + , Str " a" + , Superscript [ Str "hello\160there" ] + , Str "." + ] + , Para + [ Str "Subscripts: H" + , Subscript [ Str "2" ] + , Str "O, H" + , Subscript [ Str "23" ] + , Str "O, H" + , Subscript [ Str "many\160of\160them" ] + , Str "O." + ] + , Para + [ Str + "These should not be superscripts or subscripts, because of the unescaped spaces:" + , SoftBreak + , Str "a^b c^d, a~b c~d." + ] + , HorizontalRule + ] + , Div + ( "smart-quotes-ellipses-dashes" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header + 1 ( "" , [] , [] ) [ Str "Smart quotes, ellipses, dashes" ] + , Para + [ Quoted DoubleQuote [ Str "Hello," ] + , Str " said the spider. " + , Quoted + DoubleQuote + [ Quoted SingleQuote [ Str "Shelob" ] + , Str " is my name." + ] + ] + , Para + [ Quoted SingleQuote [ Str "A" ] + , Str ", " + , Quoted SingleQuote [ Str "B" ] + , Str ", and " + , Quoted SingleQuote [ Str "C" ] + , Str " are letters." + ] + , Para + [ Quoted SingleQuote [ Str "Oak," ] + , Str " " + , Quoted SingleQuote [ Str "elm," ] + , Str " and " + , Quoted SingleQuote [ Str "beech" ] + , Str " are names of trees. So is " + , Quoted SingleQuote [ Str "pine." ] + ] + , Para + [ Quoted + SingleQuote + [ Str "He said, " + , Quoted DoubleQuote [ Str "I want to go." ] + ] + , Str " Were you alive in the 70\8217s?" + ] + , Para + [ Str "Here is some quoted " + , Quoted SingleQuote [ Code ( "" , [] , [] ) "code" ] + , Str " and a " + , Quoted + DoubleQuote + [ Link + ( "" , [] , [] ) + [ Str "quoted" , SoftBreak , Str "link" ] + ( "http://example.com/?foo=1&bar=2" , "" ) + ] + , Str "." + ] + , Para + [ Str + "Some dashes: one\8212two \8212 three\8212four \8212 five." + ] + , Para + [ Str + "Dashes between numbers: 5\8211\&7, 255\8211\&66, 1987\8211\&1999." + ] + , Para [ Str "Ellipses\8230and\8230and\8230." ] + , HorizontalRule + ] + , Div + ( "latex" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "LaTeX" ] + , BulletList + [ [] + , [ Para [ Math InlineMath "2+2=4" ] ] + , [ Para [ Math InlineMath "x \\in y" ] ] + , [ Para [ Math InlineMath "\\alpha \\wedge \\omega" ] ] + , [ Para [ Math InlineMath "223" ] ] + , [ Para [ Math InlineMath "p" , Str "-Tree" ] ] + , [ Para + [ Str "Here\8217s some display math:" + , SoftBreak + , Math + DisplayMath + "\\frac{d}{dx}f(x)=\\lim_{h\\to 0}\\frac{f(x+h)-f(x)}{h}" + ] + ] + , [ Para + [ Str "Here\8217s one that has a line break in it: " + , Math InlineMath "\\alpha + \\omega \\times x^2" + , Str "." + ] + ] + , [ Para + [ Str "To get the famous equation, write " + , Code ( "" , [] , [] ) "$e = mc^2$" + , Str "." + ] + ] + , [ Para + [ Str "$22,000 is a " + , Emph [ Str "lot" ] + , Str " of money. So is $34,000. (It worked if " + , Quoted DoubleQuote [ Str "lot" ] + , Str " is" + , SoftBreak + , Str "emphasized.)" + ] + ] + , [ Para [ Str "Shoes ($20) and socks ($5)." ] ] + , [ Para + [ Str "Escaped " + , Code ( "" , [] , [] ) "$" + , Str ": $73 " + , Emph [ Str "this should be emphasized" ] + , Str " 23$." + ] + ] + ] + , HorizontalRule + ] + , Div + ( "special-characters" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 1 ( "" , [] , [] ) [ Str "Special Characters" ] + , Para [ Str "Here is some unicode:" ] + , BulletList + [ [ Plain [ Str "I hat: \206" ] ] + , [ Plain [ Str "o umlaut: \246" ] ] + , [ Plain [ Str "section: \167" ] ] + , [ Plain [ Str "set membership: \8712" ] ] + , [ Plain [ Str "copyright: \169" ] ] + ] + , HorizontalRule + ] + , Div + ( "links" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Links" ] + , Div + ( "explicit" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 2 ( "" , [] , [] ) [ Str "Explicit" ] + , Para + [ Str "Just a " + , Link ( "" , [] , [] ) [ Str "URL" ] ( "/url/" , "" ) + , Str "." + ] + , Para + [ Link + ( "" + , [] + , [ ( "wrapper" , "1" ) , ( "title" , "title" ) ] + ) + [ Str "URL and title" ] + ( "/url/" , "" ) + , Str "." + ] + , Para + [ Link + ( "" + , [] + , [ ( "wrapper" , "1" ) + , ( "title" , "title preceded by two spaces" ) + ] + ) + [ Str "URL and title" ] + ( "/url/" , "" ) + , Str "." + ] + , Para + [ Link + ( "" + , [] + , [ ( "wrapper" , "1" ) + , ( "title" , "title preceded by a tab" ) + ] + ) + [ Str "URL and title" ] + ( "/url/" , "" ) + , Str "." + ] + , Para + [ Link + ( "" + , [] + , [ ( "wrapper" , "1" ) + , ( "title" , "title with \"quotes\" in it" ) + ] + ) + [ Str "URL and title" ] + ( "/url/" , "" ) + ] + , Para + [ Link + ( "" + , [] + , [ ( "wrapper" , "1" ) + , ( "title" , "title with single quotes" ) + ] + ) + [ Str "URL and title" ] + ( "/url/" , "" ) + ] + , Para + [ Link + ( "" , [] , [] ) + [ Str "with_underscore" ] + ( "/url/with_underscore" , "" ) + ] + , Para + [ Link + ( "" , [] , [] ) + [ Str "Email link" ] + ( "mailto:[email protected]" , "" ) + ] + , Para + [ Link ( "" , [] , [] ) [ Str "Empty" ] ( "" , "" ) + , Str "." + ] + ] + , Div + ( "reference" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 2 ( "" , [] , [] ) [ Str "Reference" ] + , Para + [ Str "Foo " + , Link ( "" , [] , [] ) [ Str "bar" ] ( "/url/" , "" ) + , Str "." + ] + , Para + [ Str "With " + , Link + ( "" , [] , [] ) + [ Str "embedded [brackets]" ] + ( "/url/" , "" ) + , Str "." + ] + , Para + [ Link ( "" , [] , [] ) [ Str "b" ] ( "/url/" , "" ) + , Str " by itself should be a link." + ] + , Para + [ Str "Indented " + , Link ( "" , [] , [] ) [ Str "once" ] ( "/url" , "" ) + , Str "." + ] + , Para + [ Str "Indented " + , Link ( "" , [] , [] ) [ Str "twice" ] ( "/url" , "" ) + , Str "." + ] + , Para + [ Str "Indented " + , Link ( "" , [] , [] ) [ Str "thrice" ] ( "/url" , "" ) + , Str "." + ] + , Para [ Str "This should [not][] be a link." ] + , CodeBlock ( "" , [ "" ] , [] ) "[not]: /url\n" + , Para + [ Str "Foo " + , Link + ( "" + , [] + , [ ( "wrapper" , "1" ) + , ( "title" , "Title with \"quotes\" inside" ) + ] + ) + [ Str "bar" ] + ( "/url/" , "" ) + , Str "." + ] + , Para + [ Str "Foo " + , Link + ( "" + , [] + , [ ( "wrapper" , "1" ) + , ( "title" , "Title with \"quote\" inside" ) + ] + ) + [ Str "biz" ] + ( "/url/" , "" ) + , Str "." + ] + ] + , Div + ( "with-ampersands" + , [ "section" ] + , [ ( "wrapper" , "1" ) ] + ) + [ Header 2 ( "" , [] , [] ) [ Str "With ampersands" ] + , Para + [ Str "Here\8217s a " + , Link + ( "" , [] , [] ) + [ Str "link with an ampersand in the URL" ] + ( "http://example.com/?foo=1&bar=2" , "" ) + , Str "." + ] + , Para + [ Str + "Here\8217s a link with an amersand in the link text:" + , SoftBreak + , Link + ( "" + , [] + , [ ( "wrapper" , "1" ) , ( "title" , "AT&T" ) ] + ) + [ Str "AT&T" ] + ( "http://att.com/" , "" ) + , Str "." + ] + , Para + [ Str "Here\8217s an " + , Link + ( "" , [] , [] ) + [ Str "inline link" ] + ( "/script?foo=1&bar=2" , "" ) + , Str "." + ] + , Para + [ Str "Here\8217s an " + , Link + ( "" , [] , [] ) + [ Str "inline link in pointy braces" ] + ( "/script?foo=1&bar=2" , "" ) + , Str "." + ] + ] + , Div + ( "autolinks" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 2 ( "" , [] , [] ) [ Str "Autolinks" ] + , Para + [ Str "With an ampersand: " + , Link + ( "" , [ "uri" ] , [] ) + [ Str "http://example.com/?foo=1&bar=2" ] + ( "http://example.com/?foo=1&bar=2" , "" ) + ] + , BulletList + [ [ Plain [ Str "In a list?" ] ] + , [ Plain + [ Link + ( "" , [ "uri" ] , [] ) + [ Str "http://example.com/" ] + ( "http://example.com/" , "" ) + ] + ] + , [ Plain [ Str "It should." ] ] + ] + , BlockQuote + [ Para + [ Str "Blockquoted: " + , Link + ( "" , [ "uri" ] , [] ) + [ Str "http://example.com/" ] + ( "http://example.com/" , "" ) + ] + ] + , Para + [ Str "Auto-links should not occur here: " + , Code ( "" , [] , [] ) "<http://example.com/>" + ] + , CodeBlock + ( "" , [ "" ] , [] ) "or here: <http://example.com/>\n" + , HorizontalRule + ] + ] + , Div + ( "images" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Images" ] + , Para + [ Str "From " + , Quoted DoubleQuote [ Str "Voyage dans la Lune" ] + , Str " by Georges Melies (1902):" + ] + , Div + ( "" , [] , [] ) + [ Para + [ Image + ( "" + , [] + , [ ( "wrapper" , "1" ) + , ( "title" , "Voyage dans la Lune" ) + ] + ) + [ Str "lalune" ] + ( "lalune.jpg" , "" ) + ] + , Div + ( "" , [ "caption" ] , [ ( "wrapper" , "1" ) ] ) + [ Para [ Str "lalune" ] ] + ] + , Para + [ Str "Here is a movie " + , Image + ( "" , [] , [] ) [ Str "movie" ] ( "movie.jpg" , "" ) + , Str " icon." + ] + , HorizontalRule + ] + , Div + ( "footnotes" , [ "section" ] , [ ( "wrapper" , "1" ) ] ) + [ Header 1 ( "" , [] , [] ) [ Str "Footnotes" ] + , Para + [ Str "Here is a footnote reference," + , Note + [ Para + [ Str + "Here is the footnote. It can go anywhere after the footnote reference. It" + , SoftBreak + , Str "need not be placed at the end of the document." + ] + ] + , Str " and another." + , Note + [ Para + [ Str + "Here\8217s the long note. This one contains multiple blocks." + ] + , Para + [ Str + "Subsequent blocks are indented to show that they belong to the footnote (as" + , SoftBreak + , Str "with list items)." + ] + , CodeBlock ( "" , [ "" ] , [] ) "{ <code> }\n" + , Para + [ Str + "If you want, you can indent every line, but you can also be lazy and just" + , SoftBreak + , Str "indent the first line of each block." + ] + ] + , Str " This should " + , Emph [ Str "not" ] + , Str " be a" + , SoftBreak + , Str + "footnote reference, because it contains a space.[^my note] Here is an inline" + , SoftBreak + , Str "note." + , Note + [ Para + [ Str "This is " + , Emph [ Str "easier" ] + , Str " to type. Inline notes may contain" + , SoftBreak + , Link + ( "" , [] , [] ) + [ Str "links" ] + ( "http://google.com" , "" ) + , Str " and " + , Code ( "" , [] , [] ) "]" + , Str " verbatim characters, as well as" + , SoftBreak + , Str "[bracketed text]." + ] + ] + ] + , BlockQuote + [ Para + [ Str "Notes can go in quotes." + , Note [ Para [ Str "In quote." ] ] + ] + ] + , OrderedList + ( 1 , Decimal , Period ) + [ [ Plain + [ Str "And in list items." + , Note [ Para [ Str "In list." ] ] + ] + ] + ] + ] + ] diff --git a/test/tables.djot b/test/tables.djot new file mode 100644 index 000000000..94963f96e --- /dev/null +++ b/test/tables.djot @@ -0,0 +1,54 @@ +Simple table with caption: + +| Right | Left | Center | Default | +|------:|:-----|:------:|-------| +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | + +^ Demonstration of simple table syntax. + +Simple table without caption: + +| Right | Left | Center | Default | +|------:|:-----|:------:|-------| +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | + +Simple table indented two spaces: + +| Right | Left | Center | Default | +|------:|:-----|:------:|-------| +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | + +^ Demonstration of simple table syntax. + +Multiline table with caption: + +| Centered Header | Left Aligned | Right Aligned | Default aligned | +|:---------------:|:-------------|--------------:|:------------------------------------------------------| +| First | row | 12.0 | Example of a row that spans multiple lines. | +| Second | row | 5.0 | Here's another one. Note the blank line between rows. | + +^ Here's the caption. It may span multiple lines. + +Multiline table without caption: + +| Centered Header | Left Aligned | Right Aligned | Default aligned | +|:---------------:|:-------------|--------------:|:------------------------------------------------------| +| First | row | 12.0 | Example of a row that spans multiple lines. | +| Second | row | 5.0 | Here's another one. Note the blank line between rows. | + +Table without column headers: + +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | + +Multiline table without column headers: + +| First | row | 12.0 | Example of a row that spans multiple lines. | +| Second | row | 5.0 | Here's another one. Note the blank line between rows. | diff --git a/test/writer.djot b/test/writer.djot new file mode 100644 index 000000000..1faef6d4e --- /dev/null +++ b/test/writer.djot @@ -0,0 +1,749 @@ +# Pandoc Test Suite + +John MacFarlane +Anonymous + +July 17, 2006 + +This is a set of tests for pandoc. Most of them are adapted from John Gruber's +markdown test suite. + +* * * * + +{#headers} +# Headers + +{#level-2-with-an-embedded-link} +## Level 2 with an [embedded link](/url) + +{#level-3-with-emphasis} +### Level 3 with _emphasis_ + +{#level-4} +#### Level 4 + +{#level-5} +##### Level 5 + +{#level-1} +# Level 1 + +{#level-2-with-emphasis} +## Level 2 with _emphasis_ + +{#level-3} +### Level 3 + +with no blank line + +{#level-2} +## Level 2 + +with no blank line + +* * * * + +{#paragraphs} +# Paragraphs + +Here's a regular paragraph. + +In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. +Because a hard-wrapped line in the middle of a paragraph looked like a list +item. + +Here's one with a bullet. \* criminey. + +There should be a hard line break\ +here. + +* * * * + +{#block-quotes} +# Block Quotes + +E-mail style: + +> This is a block quote. It is pretty short. + +> Code in a block quote: +> +> ``` +> sub status { +> print "working"; +> } +> ``` +> +> A list: +> +> 1. item one +> 2. item two +> +> Nested block quotes: +> +> > nested +> +> > nested + +This should not be a block quote: 2 \> 1. + +And a following paragraph. + +* * * * + +{#code-blocks} +# Code Blocks + +Code: + +``` +---- (should be four hyphens) + +sub status { + print "working"; +} + +this code block is indented by one tab +``` + +And: + +``` + this code block is indented by two tabs + +These should not be escaped: \$ \\ \> \[ \{ +``` + +* * * * + +{#lists} +# Lists + +{#unordered} +## Unordered + +Asterisks tight: + +- asterisk 1 +- asterisk 2 +- asterisk 3 + +Asterisks loose: + +- asterisk 1 + +- asterisk 2 + +- asterisk 3 + +Pluses tight: + +- Plus 1 +- Plus 2 +- Plus 3 + +Pluses loose: + +- Plus 1 + +- Plus 2 + +- Plus 3 + +Minuses tight: + +- Minus 1 +- Minus 2 +- Minus 3 + +Minuses loose: + +- Minus 1 + +- Minus 2 + +- Minus 3 + +{#ordered} +## Ordered + +Tight: + +1. First +2. Second +3. Third + +and: + +1. One +2. Two +3. Three + +Loose using tabs: + +1. First + +2. Second + +3. Third + +and using spaces: + +1. One + +2. Two + +3. Three + +Multiple paragraphs: + +1. Item 1, graf one. + + Item 1. graf two. The quick brown fox jumped over the lazy dog's back. + +2. Item 2. + +3. Item 3. + +{#nested} +## Nested + +- Tab + + - Tab + + - Tab + +Here's another: + +1. First +2. Second: + + - Fee + - Fie + - Foe +3. Third + +Same thing but with paragraphs: + +1. First + +2. Second: + + - Fee + - Fie + - Foe + +3. Third + +{#tabs-and-spaces} +## Tabs and spaces + +- this is a list item indented with tabs + +- this is a list item indented with spaces + + - this is an example list item indented with tabs + + - this is an example list item indented with spaces + +{#fancy-list-markers} +## Fancy list markers + +(2) begins with 2 + +(3) and now 3 + + with a continuation + + iv. sublist with roman numerals, starting with 4 + v. more items + + (A) a subsublist + (B) a subsublist + +Nesting: + +A. Upper Alpha + + I. Upper Roman. + + (6) Decimal start with 6 + + c) Lower alpha with paren + +Autonumbering: + +1. Autonumber. +2. More. + + 1. Nested. + +Should not be a list item: + +M.A. 2007 + +B. Williams + +* * * * + +{#definition-lists} +# Definition Lists + +Tight using spaces: + +: apple + + red fruit +: orange + + orange fruit +: banana + + yellow fruit + +Tight using tabs: + +: apple + + red fruit +: orange + + orange fruit +: banana + + yellow fruit + +Loose: + +: apple + + red fruit + +: orange + + orange fruit + +: banana + + yellow fruit + +Multiple blocks with italics: + +: _apple_ + + red fruit + + contains seeds, crisp, pleasant to taste + +: _orange_ + + orange fruit + + ``` + { orange code block } + ``` + + > orange block quote + +Multiple definitions, tight: + +: apple + + red fruit + + computer +: orange + + orange fruit + + bank + +Multiple definitions, loose: + +: apple + + red fruit + + computer + +: orange + + orange fruit + + bank + +Blank line after term, indented marker, alternate markers: + +: apple + + red fruit + + computer + +: orange + + orange fruit + + 1. sublist + 2. sublist + +{#html-blocks} +# HTML Blocks + +Simple block on one line: + +::: +foo + +::: + +And nested without indentation: + +:::::: +:::: +::: +foo + +::: + +:::: + +::: +bar + +::: + +:::::: + +Interpreted markdown in a table: + +This is _emphasized_ + +And this is *strong* + +Here's a simple block: + +::: +foo + +::: + +This should be a code block, though: + +``` +<div> + foo +</div> +``` + +As should this: + +``` +<div>foo</div> +``` + +Now, nested: + +::::: +:::: +::: +foo + +::: + +:::: + +::::: + +This should just be an HTML comment: + +Multiline: + +Code block: + +``` +<!-- Comment --> +``` + +Just plain comment, with trailing spaces on the line: + +Code: + +``` +<hr /> +``` + +Hr's: + +* * * * + +{#inline-markup} +# Inline Markup + +This is _emphasized_, and so _is this_. + +This is *strong*, and so *is this*. + +An _[emphasized link](/url)_. + +*_This is strong and em._* + +So is *_this_* word. + +*_This is strong and em._* + +So is *_this_* word. + +This is code: `>`, `$`, `\`, `\$`, `<html>`. + +{-This is _strikeout_.-} + +Superscripts: a^bc^d a^_hello_^ a^hello there^. + +Subscripts: H~2~O, H~23~O, H~many of them~O. + +These should not be superscripts or subscripts, because of the unescaped spaces: +a\^b c\^d, a\~b c\~d. + +* * * * + +{#smart-quotes-ellipses-dashes} +# Smart quotes, ellipses, dashes + +"Hello," said the spider. "'Shelob' is my name." + +'A', 'B', and 'C' are letters. + +'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.' + +'He said, "I want to go."' Were you alive in the 70's? + +Here is some quoted '`code`' and a "[quoted +link](http://example.com/?foo=1&bar=2)". + +Some dashes: one---two --- three---four --- five. + +Dashes between numbers: 5--7, 255--66, 1987--1999. + +Ellipses...and...and.... + +* * * * + +{#latex} +# LaTeX + +- +- $`2+2=4` +- $`x \in y` +- $`\alpha \wedge \omega` +- $`223` +- $`p`-Tree +- Here's some display math: + $$`\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}` +- Here's one that has a line break in it: $`\alpha + \omega \times x^2`. + +These shouldn't be math: + +- To get the famous equation, write `$e = mc^2$`. +- $22,000 is a _lot_ of money. So is $34,000. (It worked if "lot" is + emphasized.) +- Shoes ($20) and socks ($5). +- Escaped `$`\: $73 _this should be emphasized_ 23$. + +Here's a LaTeX table: + +* * * * + +{#special-characters} +# Special Characters + +Here is some unicode: + +- I hat: Î +- o umlaut: ö +- section: § +- set membership: ∈ +- copyright: © + +AT&T has an ampersand in their name. + +AT&T is another way to write it. + +This & that. + +4 \< 5. + +6 \> 5. + +Backslash: \\ + +Backtick: \` + +Asterisk: \* + +Underscore: \_ + +Left brace: \{ + +Right brace: \} + +Left bracket: \[ + +Right bracket: \] + +Left paren: ( + +Right paren: ) + +Greater-than: \> + +Hash: # + +Period: . + +Bang: \! + +Plus: + + +Minus: - + +* * * * + +{#links} +# Links + +{#explicit} +## Explicit + +Just a [URL](/url/). + +[URL and title](/url/){title="title"}. + +[URL and title](/url/){title="title preceded by two spaces"}. + +[URL and title](/url/){title="title preceded by a tab"}. + +[URL and title](/url/){title="title with \"quotes\" in it"} + +[URL and title](/url/){title="title with single quotes"} + +[with\_underscore](/url/with_underscore) + +[Email link](mailto:[email protected]) + +[Empty](). + +{#reference} +## Reference + +Foo [bar](/url/). + +With [embedded \[brackets\]](/url/). + +[b](/url/) by itself should be a link. + +Indented [once](/url). + +Indented [twice](/url). + +Indented [thrice](/url). + +This should \[not\]\[\] be a link. + +``` +[not]: /url +``` + +Foo [bar](/url/){title="Title with \"quotes\" inside"}. + +Foo [biz](/url/){title="Title with \"quote\" inside"}. + +{#with-ampersands} +## With ampersands + +Here's a [link with an ampersand in the URL](http://example.com/?foo=1&bar=2). + +Here's a link with an amersand in the link text: +[AT&T](http://att.com/){title="AT&T"}. + +Here's an [inline link](/script?foo=1&bar=2). + +Here's an [inline link in pointy braces](/script?foo=1&bar=2). + +{#autolinks} +## Autolinks + +With an ampersand: <http://example.com/?foo=1&bar=2> + +- In a list? +- <http://example.com/> +- It should. + +An e-mail address: <[email protected]> + +> Blockquoted: <http://example.com/> + +Auto-links should not occur here: `<http://example.com/>` + +``` +or here: <http://example.com/> +``` + +* * * * + +{#images} +# Images + +From "Voyage dans la Lune" by Georges Melies (1902): + +:::: +{title="Voyage dans la Lune"} + +{.caption} +::: +lalune + +::: + +:::: + +Here is a movie  icon. + +* * * * + +{#footnotes} +# Footnotes + +Here is a footnote reference,[^1] and another.[^2] This should _not_ be a +footnote reference, because it contains a space.\[\^my note\] Here is an inline +note.[^3] + +> Notes can go in quotes.[^4] + +1. And in list items.[^5] + +This paragraph should not be part of the note, as it is not indented. + +[^1]: Here is the footnote. It can go anywhere after the footnote reference. It + need not be placed at the end of the document. + +[^2]: Here's the long note. This one contains multiple blocks. + + Subsequent blocks are indented to show that they belong to the footnote (as + with list items). + + ``` + { <code> } + ``` + + If you want, you can indent every line, but you can also be lazy and just + indent the first line of each block. + +[^3]: This is _easier_ to type. Inline notes may contain + [links](http://google.com) and `]` verbatim characters, as well as + \[bracketed text\]. + +[^4]: In quote. + +[^5]: In list. |
