diff --git a/src/Text/Pandoc/Writers/Org.hs b/src/Text/Pandoc/Writers/Org.hs index 32ae254cf..9285e9c55 100644 --- a/src/Text/Pandoc/Writers/Org.hs +++ b/src/Text/Pandoc/Writers/Org.hs @@ -107,7 +107,7 @@ titleToOrg [] = return empty titleToOrg lst = do contents <- inlineListToOrg lst let titleName = text "#+TITLE: " - return $ titleName $+$ contents + return $ titleName <> contents -- | Convert Pandoc block element to Org. blockToOrg :: Block -- ^ Block element diff --git a/templates/org.template b/templates/org.template new file mode 100644 index 000000000..303e1aad0 --- /dev/null +++ b/templates/org.template @@ -0,0 +1,22 @@ +$if(title)$ +$title$ + +$endif$ +#+AUTHOR: $for(author)$$author$$sep$; $endfor$ +$if(date)$ +#+DATE: $date$ + +$endif$ +$for(header-includes)$ +$header-includes$ + +$endfor$ +$for(include-before)$ +$include-before$ + +$endfor$ +$body$ +$for(include-after)$ + +$include-after$ +$endfor$ diff --git a/tests/RunTests.hs b/tests/RunTests.hs index b56b492ae..94b56d04d 100644 --- a/tests/RunTests.hs +++ b/tests/RunTests.hs @@ -62,6 +62,7 @@ writerFormats = [ "native" , "mediawiki" , "textile" , "rtf" + , "org" ] lhsWriterFormats :: [String] diff --git a/tests/tables.org b/tests/tables.org new file mode 100644 index 000000000..9eaf5e706 --- /dev/null +++ b/tests/tables.org @@ -0,0 +1,51 @@ +Simple table with caption: + +| Right | Left | Center | Default | +|---------+--------+----------+-----------| +| 12 | 12 | 12 | 12 | +| 123 | 123 | 123 | 123 | +| 1 | 1 | 1 | 1 | +#+CAPTION: 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 | +#+CAPTION: 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. | +#+CAPTION: 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/tests/writer.org b/tests/writer.org new file mode 100644 index 000000000..59f27acfc --- /dev/null +++ b/tests/writer.org @@ -0,0 +1,886 @@ +#+TITLE: Pandoc Test Suite + +#+AUTHOR: John MacFarlane; Anonymous +#+DATE: July 17, 2006 + +This is a set of tests for pandoc. Most of them are adapted from +John Gruber's markdown test suite. + +-------------- + +* Headers + +** Level 2 with an [[/url][embedded link]] + +*** Level 3 with /emphasis/ + +**** Level 4 + +***** Level 5 + +* Level 1 + +** Level 2 with /emphasis/ + +*** Level 3 + +with no blank line + +** Level 2 + +with no blank line + +-------------- + +* 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 + +E-mail style: + + +#+BEGIN_QUOTE + + This is a block quote. It is pretty short. + + +#+END_QUOTE + + +#+BEGIN_QUOTE + + Code in a block quote: + + #+BEGIN_EXAMPLE + sub status { + print "working"; + } + #+END_EXAMPLE + A list: + + + 1. item one + 2. item two + + Nested block quotes: + + +#+BEGIN_QUOTE + + nested + + +#+END_QUOTE + + +#+BEGIN_QUOTE + + nested + + +#+END_QUOTE + + +#+END_QUOTE + +This should not be a block quote: 2 > 1. + +And a following paragraph. + +-------------- + +* Code Blocks + +Code: + +#+BEGIN_EXAMPLE + ---- (should be four hyphens) + + sub status { + print "working"; + } + + this code block is indented by one tab +#+END_EXAMPLE +And: + +#+BEGIN_EXAMPLE + this code block is indented by two tabs + + These should not be escaped: \$ \\ \> \[ \{ +#+END_EXAMPLE +-------------- + +* Lists + +** 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 + +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 + + +- 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 + + +- 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 + + +(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 + +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 + + #+BEGIN_EXAMPLE + { orange code block } + #+END_EXAMPLE + +#+BEGIN_QUOTE + + orange block quote + + +#+END_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 + +Simple block on one line: + + +#+BEGIN_HTML + +
+ +#+END_HTML + +This is /emphasized/ + +#+BEGIN_HTML + + | ++ +#+END_HTML + +And this is *strong* + +#+BEGIN_HTML + + | +
}
+ #+END_EXAMPLE
+ 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
+ [[http://google.com][links]] and =]= verbatim characters, as well
+ as [bracketed text].
+
+[4] In quote.
+
+[5] In list.