From 465b2d791ef5c7b7a7ef9b53e2a4b8bb09a8c1f9 Mon Sep 17 00:00:00 2001 From: fiddlosopher Date: Sun, 15 Jul 2007 02:56:34 +0000 Subject: Merged branches/context: addition of a ConTeXt writer . + Text.Pandoc.Writers.ConTeXt added. + Text.Pandoc modified to export the basic ConTeXt writer. + Main.hs modified to recognize 'context' as a writer. + ConTeXtHeader added to headers + DefaultHeaders.hs template modified to include ConTeXt header + Tests added (writer.context, tables.context), and runtests.pl modified to run them + pandoc.cabal updated to include Text.Pandoc.Writers.ConTeXt. git-svn-id: https://pandoc.googlecode.com/svn/trunk@716 788f1e2b-df1e-0410-8736-df70ead52e1b --- tests/generate.sh | 1 + tests/runtests.pl | 10 +- tests/tables.context | 135 ++++++++++ tests/writer.context | 708 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 853 insertions(+), 1 deletion(-) create mode 100644 tests/tables.context create mode 100644 tests/writer.context (limited to 'tests') diff --git a/tests/generate.sh b/tests/generate.sh index c2e5eff0f..15e931b6c 100755 --- a/tests/generate.sh +++ b/tests/generate.sh @@ -8,4 +8,5 @@ ../pandoc -r native -s -w rtf testsuite.native > writer.rtf ../pandoc -r native -s -w man testsuite.native > writer.man sed -e '/^, Header 1 \[Str "HTML",Space,Str "Blocks"\]/,/^, HorizontalRule/d' testsuite.native | ../pandoc -r native -w docbook -s > writer.docbook +sed -e '/^, Header 1 \[Str "LaTeX"\]/,/^, HorizontalRule/d' testsuite.native | ../pandoc -r native -w context -s > writer.context diff --git a/tests/runtests.pl b/tests/runtests.pl index af0f0bc16..06e7a1b3e 100644 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -14,7 +14,7 @@ unless (-x $script) { die "$script is not executable.\n"; } print "Writer tests:\n"; -my @writeformats = ("html", "latex", "rst", "rtf", "markdown", "man", "native"); # docbook and s5 handled separately +my @writeformats = ("html", "latex", "rst", "rtf", "markdown", "man", "native"); # docbook, context, and s5 handled separately my @readformats = ("latex", "native"); # handle html,markdown & rst separately my $source = "testsuite.native"; @@ -61,6 +61,14 @@ test_results("docbook writer", "tmp.docbook", "writer.docbook"); print " docbook tables..."; test_results("docbook tables", "tmp.docbook", "tables.docbook"); +print "Testing context writer..."; +# remove LaTeX tests, as this produces invalid docbook... +`sed -e '/^, Header 1 \\[Str "LaTeX"\\]/,/^, HorizontalRule/d' testsuite.native | $script -r native -w context -s > tmp.context`; +test_results("context writer", "tmp.context", "writer.context"); +`$script -r native -w context tables.native > tmp.context`; +print " context tables..."; +test_results("context tables", "tmp.context", "tables.context"); + print "Testing s5 writer (basic)..."; `$script -r native -w s5 -s s5.native > tmp.html`; test_results("s5 writer (basic)", "tmp.html", "s5.basic.html"); diff --git a/tests/tables.context b/tests/tables.context new file mode 100644 index 000000000..cb6e9ccd1 --- /dev/null +++ b/tests/tables.context @@ -0,0 +1,135 @@ +Simple table with caption: + +\placetable[here]{Demonstration of simple table syntax.} +\starttable[|rp(0.15\textwidth)|lp(0.09\textwidth)|cp(0.16\textwidth)|lp(0.13\textwidth)|] +\HL +\NC Right +\NC Left +\NC Center +\NC Default +\NC\AR +\HL +\NC 12 +\NC 12 +\NC 12 +\NC 12 +\NC\AR +\NC 123 +\NC 123 +\NC 123 +\NC 123 +\NC\AR +\NC 1 +\NC 1 +\NC 1 +\NC 1 +\NC\AR +\HL +\stoptable + +Simple table without caption: + +\placetable[here]{none} +\starttable[|rp(0.15\textwidth)|lp(0.09\textwidth)|cp(0.16\textwidth)|lp(0.13\textwidth)|] +\HL +\NC Right +\NC Left +\NC Center +\NC Default +\NC\AR +\HL +\NC 12 +\NC 12 +\NC 12 +\NC 12 +\NC\AR +\NC 123 +\NC 123 +\NC 123 +\NC 123 +\NC\AR +\NC 1 +\NC 1 +\NC 1 +\NC 1 +\NC\AR +\HL +\stoptable + +Simple table indented two spaces: + +\placetable[here]{Demonstration of simple table syntax.} +\starttable[|rp(0.15\textwidth)|lp(0.09\textwidth)|cp(0.16\textwidth)|lp(0.13\textwidth)|] +\HL +\NC Right +\NC Left +\NC Center +\NC Default +\NC\AR +\HL +\NC 12 +\NC 12 +\NC 12 +\NC 12 +\NC\AR +\NC 123 +\NC 123 +\NC 123 +\NC 123 +\NC\AR +\NC 1 +\NC 1 +\NC 1 +\NC 1 +\NC\AR +\HL +\stoptable + +Multiline table with caption: + +\placetable[here]{Here's the caption. It may span multiple lines.} +\starttable[|cp(0.15\textwidth)|lp(0.14\textwidth)|rp(0.16\textwidth)|lp(0.34\textwidth)|] +\HL +\NC Centered Header +\NC Left Aligned +\NC Right Aligned +\NC Default aligned +\NC\AR +\HL +\NC First +\NC row +\NC 12.0 +\NC Example of a row that spans multiple lines. +\NC\AR +\NC Second +\NC row +\NC 5.0 +\NC Here's another one. Note the blank line between rows. +\NC\AR +\HL +\stoptable + +Multiline table without caption: + +\placetable[here]{none} +\starttable[|cp(0.15\textwidth)|lp(0.14\textwidth)|rp(0.16\textwidth)|lp(0.34\textwidth)|] +\HL +\NC Centered Header +\NC Left Aligned +\NC Right Aligned +\NC Default aligned +\NC\AR +\HL +\NC First +\NC row +\NC 12.0 +\NC Example of a row that spans multiple lines. +\NC\AR +\NC Second +\NC row +\NC 5.0 +\NC Here's another one. Note the blank line between rows. +\NC\AR +\HL +\stoptable + diff --git a/tests/writer.context b/tests/writer.context new file mode 100644 index 000000000..4176965e9 --- /dev/null +++ b/tests/writer.context @@ -0,0 +1,708 @@ +\enableregime[utf] % use UTF-8 + +\setupcolors[state=start] +\setupinteraction[state=start, color=middlered] % needed for hyperlinks + +\setuppapersize[letter][letter] % use letter paper +\setuplayout[width=6in, height=9.5in] % page layout +\setuppagenumbering[location={footer,center}, style=bold] % number pages +\setupbodyfont[11pt] % 11pt font +\setupwhitespace[medium] % inter-paragraph spacing + +\setuphead[section][style=\tfc] +\setuphead[subsection][style=\tfb] +\setuphead[subsubsection][style=\bf] + +% define title block commands +\unprotect +\def\doctitle#1{\gdef\@title{#1}} +\def\author#1{\gdef\@author{#1}} +\def\date#1{\gdef\@date{#1}} +\date{\currentdate} % Default to today unless specified otherwise. +\def\maketitle{% + \startalignment[center] + \blank[2*big] + {\tfd \@title} + \blank[3*medium] + {\tfa \@author} + \blank[2*medium] + {\tfa \@date} + \blank[3*medium] + \stopalignment} +\protect + +% define descr (for definition lists) +\definedescription[descr][ + headstyle=bold,style=normal,align=left,location=hanging, + width=broad,margin=1cm] + +% define ltxitem (for bulleted lists) +\defineitemgroup[ltxitem][levels=4] +\setupitemgroup[ltxitem][1][1] +\setupitemgroup[ltxitem][2][2] +\setupitemgroup[ltxitem][3][3] +\setupitemgroup[ltxitem][4][4,packed] + +% define ltxenum (for enumerated lists) +\defineitemgroup[ltxenum][levels=4] +\setupitemgroup[ltxenum][1][n] +\setupitemgroup[ltxenum][2][a] +\setupitemgroup[ltxenum][3][r] +\setupitemgroup[ltxenum][4][A,packed] + +\setupthinrules[width=15em] % width of horizontal rules + +\setupheads[sectionnumber=no, style=\bf] +\doctitle{Pandoc Test Suite} + \author{John MacFarlane \& Anonymous} + \date{July 17, 2006} + +\starttext +\maketitle + +This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite. + +\thinrule + +\section{Headers} + +\subsection{Level 2 with an \useurl[1][/url][][embedded link]\from[1]} + +\subsubsection{Level 3 with {\em emphasis}} + +Level 4 + +Level 5 + +\section{Level 1} + +\subsection{Level 2 with {\em emphasis}} + +\subsubsection{Level 3} + +with no blank line + +\subsection{Level 2} + +with no blank line + +\thinrule + +\section{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\hfil\break +here. + +\thinrule + +\section{Block Quotes} + +E-mail style: + +\startnarrower +This is a block quote. It is pretty short. + +\stopnarrower + +\startnarrower +Code in a block quote: + +\starttyping +sub status { + print "working"; +} +\stoptyping +A list: + +\startltxenum +\item item one +\item item two +\stopltxenum +Nested block quotes: + +\startnarrower +nested + +\stopnarrower + +\startnarrower +nested + +\stopnarrower + +\stopnarrower + +This should not be a block quote: 2 \lettermore{} 1. + +Box-style: + +\startnarrower +Example: + +\starttyping +sub status { + print "working"; +} +\stoptyping +\stopnarrower + +\startnarrower +\startltxenum +\item do laundry +\item take out the trash +\stopltxenum +\stopnarrower + +Here's a nested one: + +\startnarrower +Joe said: + +\startnarrower +Don't quote me. + +\stopnarrower + +\stopnarrower + +And a following paragraph. + +\thinrule + +\section{Code Blocks} + +Code: + +\starttyping +---- (should be four hyphens) + +sub status { + print "working"; +} + +this code block is indented by one tab +\stoptyping +And: + +\starttyping + this code block is indented by two tabs + +These should not be escaped: \$ \\ \> \[ \{ +\stoptyping +\thinrule + +\section{Lists} + +\subsection{Unordered} + +Asterisks tight: + +\startltxitem +\item asterisk 1 +\item asterisk 2 +\item asterisk 3 +\stopltxitem +Asterisks loose: + +\startltxitem +\item asterisk 1 + +\item asterisk 2 + +\item asterisk 3 + +\stopltxitem +Pluses tight: + +\startltxitem +\item Plus 1 +\item Plus 2 +\item Plus 3 +\stopltxitem +Pluses loose: + +\startltxitem +\item Plus 1 + +\item Plus 2 + +\item Plus 3 + +\stopltxitem +Minuses tight: + +\startltxitem +\item Minus 1 +\item Minus 2 +\item Minus 3 +\stopltxitem +Minuses loose: + +\startltxitem +\item Minus 1 + +\item Minus 2 + +\item Minus 3 + +\stopltxitem +\subsection{Ordered} + +Tight: + +\startltxenum +\item First +\item Second +\item Third +\stopltxenum +and: + +\startltxenum +\item One +\item Two +\item Three +\stopltxenum +Loose using tabs: + +\startltxenum +\item First + +\item Second + +\item Third + +\stopltxenum +and using spaces: + +\startltxenum +\item One + +\item Two + +\item Three + +\stopltxenum +Multiple paragraphs: + +\startltxenum +\item Item 1, graf one. + +Item 1. graf two. The quick brown fox jumped over the lazy dog's back. + +\item Item 2. + +\item Item 3. + +\stopltxenum +\subsection{Nested} + +\startltxitem +\item Tab +\startltxitem +\item Tab +\startltxitem +\item Tab +\stopltxitem +\stopltxitem +\stopltxitem +Here's another: + +\startltxenum +\item First +\item Second: +\startltxitem +\item Fee +\item Fie +\item Foe +\stopltxitem +\item Third +\stopltxenum +Same thing but with paragraphs: + +\startltxenum +\item First + +\item Second: + +\startltxitem +\item Fee +\item Fie +\item Foe +\stopltxitem +\item Third + +\stopltxenum +\subsection{Tabs and spaces} + +\startltxitem +\item this is a list item indented with tabs + +\item this is a list item indented with spaces + +\startltxitem +\item this is an example list item indented with tabs + +\item this is an example list item indented with spaces + +\stopltxitem +\stopltxitem +\thinrule + +\section{Definition Lists} + +Tight using spaces: + +\startdescr{apple} +red fruit + +\stopdescr +\startdescr{orange} +orange fruit + +\stopdescr +\startdescr{banana} +yellow fruit + +\stopdescr + +Tight using tabs: + +\startdescr{apple} +red fruit + +\stopdescr +\startdescr{orange} +orange fruit + +\stopdescr +\startdescr{banana} +yellow fruit + +\stopdescr + +Loose: + +\startdescr{apple} +red fruit + + +\stopdescr +\startdescr{orange} +orange fruit + + +\stopdescr +\startdescr{banana} +yellow fruit + + +\stopdescr + +Multiple blocks with italics: + +\startdescr{{\em apple}} +red fruit + +contains seeds, crisp, pleasant to taste + + +\stopdescr +\startdescr{{\em orange}} +orange fruit + +\starttyping +{ orange code block } +\stoptyping +\startnarrower +orange block quote + +\stopnarrower + + +\stopdescr + +\section{HTML Blocks} + +Simple block on one line: + +foo +And nested without indentation: + +foo +bar +Interpreted markdown in a table: + +This is {\em emphasized} +And this is {\bf strong} +Here's a simple block: + +foo +This should be a code block, though: + +\starttyping +
+ foo +
+\stoptyping +As should this: + +\starttyping +
foo
+\stoptyping +Now, nested: + +foo +This should just be an HTML comment: + +Multiline: + +Code block: + +\starttyping + +\stoptyping +Just plain comment, with trailing spaces on the line: + +Code: + +\starttyping +
+\stoptyping +Hr's: + +\thinrule + +\section{Inline Markup} + +This is {\em emphasized}, and so {\em is this}. + +This is {\bf strong}, and so {\bf is this}. + +An {\em \useurl[2][/url][][emphasized link]\from[2]}. + +{\bf {\em This is strong and em.}} + +So is {\bf {\em this}} word. + +{\bf {\em This is strong and em.}} + +So is {\bf {\em this}} word. + +This is code: \type{>}, \type{$}, \type{\}, \type{\$}, \type{}. + +\thinrule + +\section{Smart quotes, ellipses, dashes} + +\quotation{Hello,} said the spider. \quotation{\quote{Shelob} is my name.} + +\quote{A}, \quote{B}, and \quote{C} are letters. + +\quote{Oak,} \quote{elm,} and \quote{beech} are names of trees. So is \quote{pine.} + +\quote{He said, \quotation{I want to go.}} Were you alive in the 70's? + +Here is some quoted \quote{\type{code}} and a \quotation{\useurl[3][http://example.com/?foo=1&bar=2][][quoted link]\from[3]}. + +Some dashes: one---two---three---four---five. + +Dashes between numbers: 5--7, 255--66, 1987--1999. + +Ellipses\ldots{}and\ldots{}and\ldots{}. + +\thinrule + +\section{Special Characters} + +Here is some unicode: + +\startltxitem +\item I hat: Î +\item o umlaut: ö +\item section: § +\item set membership: ∈ +\item copyright: © +\stopltxitem +AT\&T has an ampersand in their name. + +AT\&T is another way to write it. + +This \& that. + +4 \letterless{} 5. + +6 \lettermore{} 5. + +Backslash: \letterbackslash{} + +Backtick: ` + +Asterisk: * + +Underscore: \letterunderscore{} + +Left brace: \letteropenbrace{} + +Right brace: \letterclosebrace{} + +Left bracket: [ + +Right bracket: ] + +Left paren: ( + +Right paren: ) + +Greater-than: \lettermore{} + +Hash: \# + +Period: . + +Bang: ! + +Plus: + + +Minus: - + +\thinrule + +\section{Links} + +\subsection{Explicit} + +Just a \useurl[4][/url/][][URL]\from[4]. + +\useurl[5][/url/][][URL and title]\from[5]. + +\useurl[6][/url/][][URL and title]\from[6]. + +\useurl[7][/url/][][URL and title]\from[7]. + +\useurl[8][/url/][][URL and title]\from[8] + +\useurl[9][/url/][][URL and title]\from[9] + +\useurl[10][/url/with_underscore][][with\letterunderscore{}underscore]\from[10] + +\useurl[11][mailto:nobody@nowhere.net][][Email link]\from[11] + +\useurl[12][][][Empty]\from[12]. + +\subsection{Reference} + +Foo \useurl[13][/url/][][bar]\from[13]. + +Foo \useurl[14][/url/][][bar]\from[14]. + +Foo \useurl[15][/url/][][bar]\from[15]. + +With \useurl[16][/url/][][embedded [brackets]]\from[16]. + +\useurl[17][/url/][][b]\from[17] by itself should be a link. + +Indented \useurl[18][/url][][once]\from[18]. + +Indented \useurl[19][/url][][twice]\from[19]. + +Indented \useurl[20][/url][][thrice]\from[20]. + +This should [not][] be a link. + +\starttyping +[not]: /url +\stoptyping +Foo \useurl[21][/url/][][bar]\from[21]. + +Foo \useurl[22][/url/][][biz]\from[22]. + +\subsection{With ampersands} + +Here's a \useurl[23][http://example.com/?foo=1&bar=2][][link with an ampersand in the URL]\from[23]. + +Here's a link with an amersand in the link text: \useurl[24][http://att.com/][][AT\&T]\from[24]. + +Here's an \useurl[25][/script?foo=1&bar=2][][inline link]\from[25]. + +Here's an \useurl[26][/script?foo=1&bar=2][][inline link in pointy braces]\from[26]. + +\subsection{Autolinks} + +With an ampersand: \useurl[27][http://example.com/?foo=1&bar=2][][http://example.com/?foo=1\&bar=2]\from[27] + +\startltxitem +\item In a list? +\item \useurl[28][http://example.com/][][http://example.com/]\from[28] +\item It should. +\stopltxitem +An e-mail address: \useurl[29][mailto:nobody@nowhere.net][][nobody@nowhere.net]\from[29] + +\startnarrower +Blockquoted: \useurl[30][http://example.com/][][http://example.com/]\from[30] + +\stopnarrower + +Auto-links should not occur here: \type{} + +\starttyping +or here: +\stoptyping +\thinrule + +\section{Images} + +From \quotation{Voyage dans la Lune} by Georges Melies (1902): + +\placefigure +[] +[fig:lalune] +{Voyage dans la Lune} +{\externalfigure[lalune.jpg]} + +Here is a movie \placefigure +[] +[fig:movie] +{} +{\externalfigure[movie.jpg]} icon. + +\thinrule + +\section{Footnotes} + +Here is a footnote reference,\footnote{Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document. + +} and another.\footnote{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). + +\starttyping + { } +\stoptyping +If you want, you can indent every line, but you can also be lazy and just indent the first line of each block. + +} This should {\em not} be a footnote reference, because it contains a space.[\letterhat{}my note] Here is an inline note.\footnote{This is {\em easier} to type. Inline notes may contain \useurl[31][http://google.com][][links]\from[31] and \type{]} verbatim characters, as well as [bracketed text]. + +} + +\startnarrower +Notes can go in quotes.\footnote{In quote. + +} + +\stopnarrower + +\startltxenum +\item And in list items.\footnote{In list. + +} +\stopltxenum +This paragraph should not be part of the note, as it is not indented. + + +\stoptext -- cgit v1.2.3