pandoc 1.12.4 → 1.12.4.2
raw patch · 55 files changed
+518/−219 lines, 55 filesdep ~highlighting-katedep ~texmathsetup-changed
Dependency ranges changed: highlighting-kate, texmath
Files
- COPYRIGHT +5/−5
- Setup.hs +17/−0
- benchmark/benchmark-pandoc.hs +17/−1
- changelog +44/−0
- data/templates/default.icml +43/−0
- pandoc.cabal +6/−5
- pandoc.hs +3/−3
- src/Text/Pandoc.hs +3/−3
- src/Text/Pandoc/Asciify.hs +2/−2
- src/Text/Pandoc/Highlighting.hs +2/−2
- src/Text/Pandoc/ImageSize.hs +2/−2
- src/Text/Pandoc/MIME.hs +2/−2
- src/Text/Pandoc/Options.hs +2/−2
- src/Text/Pandoc/PDF.hs +2/−2
- src/Text/Pandoc/Parsing.hs +38/−11
- src/Text/Pandoc/Pretty.hs +2/−2
- src/Text/Pandoc/Process.hs +3/−4
- src/Text/Pandoc/Readers/HTML.hs +2/−2
- src/Text/Pandoc/Readers/LaTeX.hs +11/−4
- src/Text/Pandoc/Readers/Markdown.hs +4/−23
- src/Text/Pandoc/Readers/MediaWiki.hs +2/−2
- src/Text/Pandoc/Readers/Native.hs +2/−2
- src/Text/Pandoc/Readers/Org.hs +179/−76
- src/Text/Pandoc/Readers/RST.hs +2/−2
- src/Text/Pandoc/Readers/TeXMath.hs +2/−2
- src/Text/Pandoc/Readers/Textile.hs +3/−2
- src/Text/Pandoc/SelfContained.hs +2/−2
- src/Text/Pandoc/Shared.hs +5/−3
- src/Text/Pandoc/Slides.hs +2/−2
- src/Text/Pandoc/Templates.hs +2/−2
- src/Text/Pandoc/UTF8.hs +2/−2
- src/Text/Pandoc/UUID.hs +2/−2
- src/Text/Pandoc/Writers/AsciiDoc.hs +2/−2
- src/Text/Pandoc/Writers/ConTeXt.hs +2/−2
- src/Text/Pandoc/Writers/Custom.hs +2/−2
- src/Text/Pandoc/Writers/Docbook.hs +2/−2
- src/Text/Pandoc/Writers/Docx.hs +2/−2
- src/Text/Pandoc/Writers/EPUB.hs +2/−2
- src/Text/Pandoc/Writers/HTML.hs +2/−2
- src/Text/Pandoc/Writers/LaTeX.hs +2/−2
- src/Text/Pandoc/Writers/Man.hs +2/−2
- src/Text/Pandoc/Writers/Markdown.hs +2/−2
- src/Text/Pandoc/Writers/MediaWiki.hs +2/−2
- src/Text/Pandoc/Writers/Native.hs +2/−2
- src/Text/Pandoc/Writers/ODT.hs +2/−2
- src/Text/Pandoc/Writers/OPML.hs +2/−2
- src/Text/Pandoc/Writers/OpenDocument.hs +3/−3
- src/Text/Pandoc/Writers/Org.hs +3/−2
- src/Text/Pandoc/Writers/RST.hs +2/−2
- src/Text/Pandoc/Writers/RTF.hs +2/−2
- src/Text/Pandoc/Writers/Shared.hs +2/−2
- src/Text/Pandoc/Writers/Texinfo.hs +2/−2
- src/Text/Pandoc/Writers/Textile.hs +2/−2
- src/Text/Pandoc/XML.hs +2/−2
- tests/Tests/Readers/Org.hs +57/−0
COPYRIGHT view
@@ -1,5 +1,5 @@ Pandoc-Copyright (C) 2006-2013 John MacFarlane <jgm at berkeley dot edu>+Copyright (C) 2006-2014 John MacFarlane <jgm at berkeley dot edu> This code is released under the [GPL], version 2 or later: @@ -33,25 +33,25 @@ ---------------------------------------------------------------------- src/Text/Pandoc/Writers/Texinfo.hs-Copyright (C) 2008-2010 John MacFarlane and Peter Wang+Copyright (C) 2008-2014 John MacFarlane and Peter Wang Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Writers/OpenDocument.hs-Copyright (C) 2008-2010 Andrea Rossato and John MacFarlane+Copyright (C) 2008-2014 Andrea Rossato and John MacFarlane Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Writers/Org.hs-Copyright (C) 2010 Puneeth Chaganti+Copyright (C) 2010-2014 Puneeth Chaganti and JohnMacFarlane Released under the GNU General Public License version 2 or later. ---------------------------------------------------------------------- src/Text/Pandoc/Readers/Textile.hs-Copyright (C) 2010 Paul Rivier+Copyright (C) 2010-2014 Paul Rivier and John MacFarlane Released under the GNU General Public License version 2 or later.
Setup.hs view
@@ -1,4 +1,21 @@ {-# LANGUAGE CPP #-}+{-+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu>++This program is free software; you can redistribute it and/or modify+it under the terms of the GNU General Public License as published by+the Free Software Foundation; either version 2 of the License, or+(at your option) any later version.++This program is distributed in the hope that it will be useful,+but WITHOUT ANY WARRANTY; without even the implied warranty of+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+GNU General Public License for more details.++You should have received a copy of the GNU General Public License+along with this program; if not, write to the Free Software+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+-} import Distribution.Simple import Distribution.Simple.PreProcess
benchmark/benchmark-pandoc.hs view
@@ -1,3 +1,20 @@+{-+Copyright (C) 2012-2014 John MacFarlane <jgm@berkeley.edu>++This program is free software; you can redistribute it and/or modify+it under the terms of the GNU General Public License as published by+the Free Software Foundation; either version 2 of the License, or+(at your option) any later version.++This program is distributed in the hope that it will be useful,+but WITHOUT ANY WARRANTY; without even the implied warranty of+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+GNU General Public License for more details.++You should have received a copy of the GNU General Public License+along with this program; if not, write to the Free Software+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+-} import Text.Pandoc import Criterion.Main import Criterion.Config@@ -36,4 +53,3 @@ let writers' = [(n,w) | (n, PureStringWriter w) <- writers] defaultMainWith conf (return ()) $ map (writerBench doc) writers' ++ readerBs-
changelog view
@@ -1,3 +1,47 @@+pandoc (1.12.4.2)++ * Require highlighting-kate >= 0.5.8. Fixes a performance regression.++ * Shared: `addMetaValue` now behaves slightly differently:+ if both the new and old values are lists, it concatenates their+ contents to form a new list.++ * LaTeX reader:++ + Set `bibliography` in metadata from `\bibliography` or+ `\addbibresource` command.+ + Don't error on `%foo` with no trailing newline.++ * Org reader:++ + Support code block headers (`#+BEGIN_SRC ...`) (Albert Krewinkel).+ + Fix parsing of blank lines within blocks (Albert Krewinkel).+ + Support pandoc citation extension (Albert Krewinkel). This can+ be turned off by specifying `org-citation` as the input format.++ * Markdown reader:++ + `citeKey` moved to `Text.Pandoc.Parsing` so it can be used by+ other readers (Albert Krewinkel).++ * `Text.Pandoc.Parsing`:++ + Added `citeKey` (see above).+ + Added `HasLastStrPosition` type class and `updateLastStrPos`+ and `notAfterString` functions.++ * Updated copyright notices (Albert Krewinkel).++ * Added default.icml to data files so it installs with the package.++ * OSX package:++ + The binary is now built with options to ensure that it can be+ used with OSX 10.6+.+ + Moved OSX package materials to osx directory.+ + Added OSX package uninstall script, included in the zip container+ (thanks to Daniel T. Staal).+ pandoc (1.12.4) * Made it possible to run filters that aren't executable (#1096).
+ data/templates/default.icml view
@@ -0,0 +1,43 @@+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>+<?aid style="50" type="snippet" readerVersion="6.0" featureSet="513" product="8.0(370)" ?>+<?aid SnippetType="InCopyInterchange"?>+<Document DOMVersion="8.0" Self="pandoc_doc">+ <RootCharacterStyleGroup Self="pandoc_character_styles">+ <CharacterStyle Self="$$ID/NormalCharacterStyle" Name="Default" />+ $charStyles$ + </RootCharacterStyleGroup>+ <RootParagraphStyleGroup Self="pandoc_paragraph_styles">+ <ParagraphStyle Self="$$ID/NormalParagraphStyle" Name="$$ID/NormalParagraphStyle"+ SpaceBefore="6" SpaceAfter="6"> <!-- paragraph spacing -->+ <Properties>+ <TabList type="list">+ <ListItem type="record">+ <Alignment type="enumeration">LeftAlign</Alignment>+ <AlignmentCharacter type="string">.</AlignmentCharacter>+ <Leader type="string"></Leader>+ <Position type="unit">10</Position> <!-- first tab stop -->+ </ListItem>+ </TabList>+ </Properties>+ </ParagraphStyle>+ $parStyles$ + </RootParagraphStyleGroup>+ <RootTableStyleGroup Self="pandoc_table_styles">+ <TableStyle Self="TableStyle/Table" Name="Table" />+ </RootTableStyleGroup>+ <RootCellStyleGroup Self="pandoc_cell_styles">+ <CellStyle Self="CellStyle/Cell" AppliedParagraphStyle="ParagraphStyle/$$ID/[No paragraph style]" Name="Cell" />+ </RootCellStyleGroup>+ <Story Self="pandoc_story"+ TrackChanges="false"+ StoryTitle="$if(title-prefix)$$title-prefix$ - $endif$$pagetitle$"+ AppliedTOCStyle="n"+ AppliedNamedGrid="n" >+ <StoryPreference OpticalMarginAlignment="true" OpticalMarginSize="12" />++<!-- body needs to be non-indented, otherwise code blocks are indented too far -->+$body$++ </Story>+ $hyperlinks$+</Document>
pandoc.cabal view
@@ -1,10 +1,10 @@ Name: pandoc-Version: 1.12.4+Version: 1.12.4.2 Cabal-Version: >= 1.10 Build-Type: Custom License: GPL License-File: COPYING-Copyright: (c) 2006-2013 John MacFarlane+Copyright: (c) 2006-2014 John MacFarlane Author: John MacFarlane <jgm@berkeley.edu> Maintainer: John MacFarlane <jgm@berkeley.edu> Bug-Reports: https://github.com/jgm/pandoc/issues@@ -45,6 +45,7 @@ data/templates/default.docbook, data/templates/default.beamer, data/templates/default.opendocument,+ data/templates/default.icml, data/templates/default.opml, data/templates/default.latex, data/templates/default.context,@@ -226,7 +227,7 @@ tagsoup >= 0.13.1 && < 0.14, base64-bytestring >= 0.1 && < 1.1, zlib >= 0.5 && < 0.6,- highlighting-kate >= 0.5.7 && < 0.6,+ highlighting-kate >= 0.5.8 && < 0.6, data-default >= 0.4 && < 0.6, temporary >= 1.1 && < 1.3, blaze-html >= 0.5 && < 0.8,@@ -327,7 +328,7 @@ text >= 0.11 && < 1.2, bytestring >= 0.9 && < 0.11, extensible-exceptions >= 0.1 && < 0.2,- highlighting-kate >= 0.5.7 && < 0.6,+ highlighting-kate >= 0.5.8 && < 0.6, aeson >= 0.7 && < 0.8, yaml >= 0.8.8.2 && < 0.9, containers >= 0.1 && < 0.6,@@ -370,7 +371,7 @@ directory >= 1 && < 1.3, filepath >= 1.1 && < 1.4, process >= 1 && < 1.3,- highlighting-kate >= 0.5.7 && < 0.6,+ highlighting-kate >= 0.5.8 && < 0.6, Diff >= 0.2 && < 0.4, test-framework >= 0.3 && < 0.9, test-framework-hunit >= 0.2 && < 0.4,
pandoc.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE CPP #-} {--Copyright (C) 2006-2013 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Main- Copyright : Copyright (C) 2006-2013 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley@edu>@@ -69,7 +69,7 @@ import qualified Data.Text as T copyrightMessage :: String-copyrightMessage = "\nCopyright (C) 2006-2013 John MacFarlane\n" +++copyrightMessage = "\nCopyright (C) 2006-2014 John MacFarlane\n" ++ "Web: http://johnmacfarlane.net/pandoc\n" ++ "This is free software; see the source for copying conditions. There is no\n" ++ "warranty, not even for merchantability or fitness for a particular purpose."
src/Text/Pandoc.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE ScopedTypeVariables, FlexibleInstances #-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>@@ -275,6 +275,7 @@ getDefaultExtensions "markdown_github" = githubMarkdownExtensions getDefaultExtensions "markdown" = pandocExtensions getDefaultExtensions "plain" = pandocExtensions+getDefaultExtensions "org" = Set.fromList [Ext_citations] getDefaultExtensions "textile" = Set.fromList [Ext_auto_identifiers, Ext_raw_tex] getDefaultExtensions _ = Set.fromList [Ext_auto_identifiers] @@ -319,4 +320,3 @@ writeJSON :: WriterOptions -> Pandoc -> String writeJSON _ = UTF8.toStringLazy . encode-
src/Text/Pandoc/Asciify.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2013 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2013-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.SelfContained- Copyright : Copyright (C) 2013 John MacFarlane+ Copyright : Copyright (C) 2013-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Highlighting.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2008 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2008-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Highlighting- Copyright : Copyright (C) 2008 John MacFarlane+ Copyright : Copyright (C) 2008-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/ImageSize.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-} {-- Copyright (C) 2011 John MacFarlane <jgm@berkeley.edu>+ Copyright (C) 2011-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.ImageSize-Copyright : Copyright (C) 2011 John MacFarlane+Copyright : Copyright (C) 2011-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/MIME.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2011 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2011-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.MIME- Copyright : Copyright (C) 2011 John MacFarlane+ Copyright : Copyright (C) 2011-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Options.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2012 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2012-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Options- Copyright : Copyright (C) 2012 John MacFarlane+ Copyright : Copyright (C) 2012-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/PDF.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings, CPP #-} {--Copyright (C) 2012 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2012-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.PDF- Copyright : Copyright (C) 2012 John MacFarlane+ Copyright : Copyright (C) 2012-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Parsing.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE GeneralizedNewtypeDeriving, TypeSynonymInstances, FlexibleInstances#-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -20,7 +20,7 @@ {- | Module : Text.Pandoc.Parsing- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>@@ -54,7 +54,6 @@ withRaw, escaped, characterReference,- updateLastStrPos, anyOrderedListMarker, orderedListMarker, charRef,@@ -66,11 +65,14 @@ testStringWith, guardEnabled, guardDisabled,+ updateLastStrPos,+ notAfterString, ParserState (..), HasReaderOptions (..), HasHeaderMap (..), HasIdentifierList (..), HasMacros (..),+ HasLastStrPosition (..), defaultParserState, HeaderType (..), ParserContext (..),@@ -92,6 +94,7 @@ apostrophe, dash, nested,+ citeKey, macro, applyMacros', Parser,@@ -904,6 +907,14 @@ extractMacros = stateMacros updateMacros f st = st{ stateMacros = f $ stateMacros st } +class HasLastStrPosition st where+ setLastStrPos :: SourcePos -> st -> st+ getLastStrPos :: st -> Maybe SourcePos++instance HasLastStrPosition ParserState where+ setLastStrPos pos st = st{ stateLastStrPos = Just pos }+ getLastStrPos st = stateLastStrPos st+ defaultParserState :: ParserState defaultParserState = ParserState { stateOptions = def,@@ -938,6 +949,17 @@ guardDisabled :: HasReaderOptions st => Extension -> Parser s st () guardDisabled ext = getOption readerExtensions >>= guard . not . Set.member ext +-- | Update the position on which the last string ended.+updateLastStrPos :: HasLastStrPosition st => Parser s st ()+updateLastStrPos = getPosition >>= updateState . setLastStrPos++-- | Whether we are right after the end of a string.+notAfterString :: HasLastStrPosition st => Parser s st Bool+notAfterString = do+ pos <- getPosition+ st <- getState+ return $ getLastStrPos st /= Just pos+ data HeaderType = SingleHeader Char -- ^ Single line of characters underneath | DoubleHeader Char -- ^ Lines of characters above and below@@ -1049,17 +1071,11 @@ guard (c `elem` cs) return c) -updateLastStrPos :: Parser [Char] ParserState ()-updateLastStrPos = getPosition >>= \p ->- updateState $ \s -> s{ stateLastStrPos = Just p }- singleQuoteStart :: Parser [Char] ParserState () singleQuoteStart = do failIfInQuoteContext InSingleQuote- pos <- getPosition- st <- getState -- single quote start can't be right after str- guard $ stateLastStrPos st /= Just pos+ guard =<< notAfterString () <$ charOrRef "'\8216\145" singleQuoteEnd :: Parser [Char] st ()@@ -1129,6 +1145,18 @@ updateState $ \st -> st{ stateMaxNestingLevel = nestlevel } return res +citeKey :: HasLastStrPosition st => Parser [Char] st (Bool, String)+citeKey = try $ do+ guard =<< notAfterString+ suppress_author <- option False (char '-' *> return True)+ char '@'+ firstChar <- letter <|> char '_'+ let regchar = satisfy (\c -> isAlphaNum c || c == '_')+ let internal p = try $ p <* lookAhead regchar+ rest <- many $ regchar <|> internal (oneOf ":.#$%&-+?<>~/")+ let key = firstChar:rest+ return (suppress_author, key)+ -- -- Macros --@@ -1156,4 +1184,3 @@ then do macros <- extractMacros `fmap` getState return $ applyMacros macros target else return target-
src/Text/Pandoc/Pretty.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE GeneralizedNewtypeDeriving, CPP #-} {--Copyright (C) 2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2010-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Pretty- Copyright : Copyright (C) 2010 John MacFarlane+ Copyright : Copyright (C) 2010-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Process.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2013 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2013-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Process- Copyright : Copyright (C) 2013 John MacFarlane+ Copyright : Copyright (C) 2013-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>@@ -47,7 +47,7 @@ the standard output, and the standard error. If an asynchronous exception is thrown to the thread executing-@readProcessWithExitCode@. The forked process will be terminated and+@readProcessWithExitCode@, the forked process will be terminated and @readProcessWithExitCode@ will wait (block) until the process has been terminated. -}@@ -102,4 +102,3 @@ res <- newEmptyMVar _ <- mask $ \restore -> forkIO $ try (restore a) >>= putMVar res return (takeMVar res >>= either (\ex -> throwIO (ex :: SomeException)) return)-
src/Text/Pandoc/Readers/HTML.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Readers.HTML- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Readers/LaTeX.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE ScopedTypeVariables, OverloadedStrings #-} {--Copyright (C) 2006-2012 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Readers.LaTeX- Copyright : Copyright (C) 2006-2012 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>@@ -125,7 +125,7 @@ comment = do char '%' skipMany (satisfy (/='\n'))- newline+ optional newline return () bgroup :: LP ()@@ -307,6 +307,10 @@ , ("caption", tok >>= setCaption) , ("PandocStartInclude", startInclude) , ("PandocEndInclude", endInclude)+ , ("bibliography", mempty <$ (skipopts *> braced >>=+ addMeta "bibliography" . splitBibs))+ , ("addbibresource", mempty <$ (skipopts *> braced >>=+ addMeta "bibliography" . splitBibs)) ] ++ map ignoreBlocks -- these commands will be ignored unless --parse-raw is specified, -- in which case they will appear as raw latex blocks@@ -314,7 +318,7 @@ -- newcommand, etc. should be parsed by macro, but we need this -- here so these aren't parsed as inline commands to ignore , "special", "pdfannot", "pdfstringdef"- , "bibliography", "bibliographystyle"+ , "bibliographystyle" , "maketitle", "makeindex", "makeglossary" , "addcontentsline", "addtocontents", "addtocounter" -- \ignore{} is used conventionally in literate haskell for definitions@@ -328,6 +332,9 @@ addMeta :: ToMetaValue a => String -> a -> LP () addMeta field val = updateState $ \st -> st{ stateMeta = addMetaField field val $ stateMeta st }++splitBibs :: String -> [Inlines]+splitBibs = map (str . flip replaceExtension "bib" . trim) . splitBy (==',') setCaption :: Inlines -> LP Blocks setCaption ils = do
src/Text/Pandoc/Readers/Markdown.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE RelaxedPolyRec #-} -- needed for inlinesBetween on GHC < 7 {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Readers.Markdown- Copyright : Copyright (C) 2006-2013 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>@@ -1474,9 +1474,7 @@ where checkIntraword = do exts <- getOption readerExtensions when (Ext_intraword_underscores `Set.member` exts) $ do- pos <- getPosition- lastStrPos <- stateLastStrPos <$> getState- guard $ lastStrPos /= Just pos+ guard =<< notAfterString -- | Parses a list of inlines between start and end delimiters. inlinesBetween :: (Show b)@@ -1518,8 +1516,7 @@ str :: MarkdownParser (F Inlines) str = do result <- many1 alphaNum- pos <- getPosition- updateState $ \s -> s{ stateLastStrPos = Just pos }+ updateLastStrPos let spacesToNbr = map (\c -> if c == ' ' then '\160' else c) isSmart <- getOption readerSmart if isSmart@@ -1816,22 +1813,6 @@ spnl char ']' return citations--citeKey :: MarkdownParser (Bool, String)-citeKey = try $ do- -- make sure we're not right after an alphanumeric,- -- since foo@bar.baz is probably an email address- lastStrPos <- stateLastStrPos <$> getState- pos <- getPosition- guard $ lastStrPos /= Just pos- suppress_author <- option False (char '-' >> return True)- char '@'- first <- letter <|> char '_'- let regchar = satisfy (\c -> isAlphaNum c || c == '_')- let internal p = try $ p >>~ lookAhead regchar- rest <- many $ regchar <|> internal (oneOf ":.#$%&-+?<>~/")- let key = first:rest- return (suppress_author, key) suffix :: MarkdownParser (F Inlines) suffix = try $ do
src/Text/Pandoc/Readers/MediaWiki.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE RelaxedPolyRec, FlexibleInstances, TypeSynonymInstances #-} -- RelaxedPolyRec needed for inlinesBetween on GHC < 7 {-- Copyright (C) 2012 John MacFarlane <jgm@berkeley.edu>+ Copyright (C) 2012-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -20,7 +20,7 @@ {- | Module : Text.Pandoc.Readers.MediaWiki- Copyright : Copyright (C) 2012 John MacFarlane+ Copyright : Copyright (C) 2012-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Readers/Native.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2011 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2011-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Readers.Native- Copyright : Copyright (C) 2011 John MacFarlane+ Copyright : Copyright (C) 2011-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Readers/Org.hs view
@@ -50,7 +50,7 @@ import Data.Default import Data.List (intersperse, isPrefixOf, isSuffixOf) import qualified Data.Map as M-import Data.Maybe (listToMaybe, fromMaybe, isJust)+import Data.Maybe (fromMaybe, isJust) import Data.Monoid (Monoid, mconcat, mempty, mappend) import Network.HTTP (urlEncode) @@ -105,6 +105,10 @@ deleteMeta field st = st{ orgStateMeta = deleteMeta field $ orgStateMeta st } +instance HasLastStrPosition OrgParserState where+ getLastStrPos = orgStateLastStrPos+ setLastStrPos pos st = st{ orgStateLastStrPos = Just pos }+ instance Default OrgParserState where def = defaultOrgParserState @@ -162,7 +166,8 @@ s{ orgStateEmphasisCharStack = drop 1 . orgStateEmphasisCharStack $ s } surroundingEmphasisChar :: OrgParser [Char]-surroundingEmphasisChar = take 1 . drop 1 . orgStateEmphasisCharStack <$> getState+surroundingEmphasisChar =+ take 1 . drop 1 . orgStateEmphasisCharStack <$> getState startEmphasisNewlinesCounting :: Int -> OrgParser () startEmphasisNewlinesCounting maxNewlines = updateState $ \s ->@@ -170,7 +175,7 @@ decEmphasisNewlinesCount :: OrgParser () decEmphasisNewlinesCount = updateState $ \s ->- s{ orgStateEmphasisNewlines = (\n -> n - 1) <$> orgStateEmphasisNewlines s }+ s{ orgStateEmphasisNewlines = (\n -> n - 1) <$> orgStateEmphasisNewlines s } newlinesCountWithinLimits :: OrgParser Bool newlinesCountWithinLimits = do@@ -275,7 +280,7 @@ where attribute :: OrgParser (String, String) attribute = try $ do- key <- metaLineStart *> many1Till (noneOf "\n\r") (char ':')+ key <- metaLineStart *> many1Till nonspaceChar (char ':') val <- skipSpaces *> anyLine return (map toLower key, val) @@ -296,57 +301,74 @@ -- Org Blocks (#+BEGIN_... / #+END_...) -- +type BlockProperties = (Int, String) -- (Indentation, Block-Type)+ orgBlock :: OrgParser (F Blocks) orgBlock = try $ do- (indent, blockType, args) <- blockHeader- content <- rawBlockContent indent blockType- contentBlocks <- parseFromString parseBlocks (content ++ "\n")- let classArgs = [ translateLang . fromMaybe [] $ listToMaybe args ]- case blockType of- "comment" -> return mempty- "html" -> returnF $ B.rawBlock "html" content- "latex" -> returnF $ B.rawBlock "latex" content- "ascii" -> returnF $ B.rawBlock "ascii" content- "example" -> returnF $ exampleCode content- "quote" -> return $ B.blockQuote <$> contentBlocks- "verse" -> parseVerse content- "src" -> codeBlockWithAttr classArgs content- _ -> return $ B.divWith ("", [blockType], []) <$> contentBlocks+ blockProp@(_, blkType) <- blockHeaderStart+ ($ blockProp) $+ case blkType of+ "comment" -> withRaw' (const mempty)+ "html" -> withRaw' (return . (B.rawBlock blkType))+ "latex" -> withRaw' (return . (B.rawBlock blkType))+ "ascii" -> withRaw' (return . (B.rawBlock blkType))+ "example" -> withRaw' (return . exampleCode)+ "quote" -> withParsed (fmap B.blockQuote)+ "verse" -> verseBlock+ "src" -> codeBlock+ _ -> withParsed (fmap $ divWithClass blkType)++blockHeaderStart :: OrgParser (Int, String)+blockHeaderStart = try $ (,) <$> indent <*> blockType where- parseVerse :: String -> OrgParser (F Blocks)- parseVerse cs =- fmap B.para . mconcat . intersperse (pure B.linebreak)- <$> mapM (parseFromString parseInlines) (lines cs)+ indent = length <$> many spaceChar+ blockType = map toLower <$> (stringAnyCase "#+begin_" *> orgArgWord) -blockHeader :: OrgParser (Int, String, [String])-blockHeader = (,,) <$> blockIndent- <*> blockType- <*> (skipSpaces *> blockArgs)- where blockIndent = length <$> many spaceChar- blockType = map toLower <$> (stringAnyCase "#+begin_" *> many letter)- blockArgs = manyTill (many nonspaceChar <* skipSpaces) newline+withRaw' :: (String -> F Blocks) -> BlockProperties -> OrgParser (F Blocks)+withRaw' f blockProp = (ignHeaders *> (f <$> rawBlockContent blockProp)) -codeBlockWithAttr :: [String] -> String -> OrgParser (F Blocks)-codeBlockWithAttr classArgs content = do- identifier <- fromMaybe "" <$> lookupBlockAttribute "name"- caption <- lookupInlinesAttr "caption"- let codeBlck = B.codeBlockWith (identifier, classArgs, []) content- return $ maybe (pure codeBlck) (labelDiv codeBlck) caption+withParsed :: (F Blocks -> F Blocks) -> BlockProperties -> OrgParser (F Blocks)+withParsed f blockProp = (ignHeaders *> (f <$> parsedBlockContent blockProp))++ignHeaders :: OrgParser ()+ignHeaders = (() <$ newline) <|> (() <$ anyLine)++divWithClass :: String -> Blocks -> Blocks+divWithClass cls = B.divWith ("", [cls], [])++verseBlock :: BlockProperties -> OrgParser (F Blocks)+verseBlock blkProp = try $ do+ ignHeaders+ content <- rawBlockContent blkProp+ fmap B.para . mconcat . intersperse (pure B.linebreak)+ <$> mapM (parseFromString parseInlines) (lines content)++codeBlock :: BlockProperties -> OrgParser (F Blocks)+codeBlock blkProp = do+ skipSpaces+ (classes, kv) <- codeHeaderArgs <|> (mempty <$ ignHeaders)+ id' <- fromMaybe "" <$> lookupBlockAttribute "name"+ content <- rawBlockContent blkProp+ let codeBlck = B.codeBlockWith ( id', classes, kv ) content+ maybe (pure codeBlck) (labelDiv codeBlck) <$> lookupInlinesAttr "caption" where labelDiv blk value = B.divWith nullAttr <$> (mappend <$> labelledBlock value <*> pure blk) labelledBlock = fmap (B.plain . B.spanWith ("", ["label"], [])) -rawBlockContent :: Int -> String -> OrgParser String-rawBlockContent indent blockType =+rawBlockContent :: BlockProperties -> OrgParser String+rawBlockContent (indent, blockType) = try $ unlines . map commaEscaped <$> manyTill indentedLine blockEnder where- indentedLine = try $ choice [ blankline *> pure "\n"- , indentWith indent *> anyLine- ]+ indentedLine = try $ ("" <$ blankline) <|> (indentWith indent *> anyLine) blockEnder = try $ indentWith indent *> stringAnyCase ("#+end_" <> blockType) +parsedBlockContent :: BlockProperties -> OrgParser (F Blocks)+parsedBlockContent blkProps = try $ do+ raw <- rawBlockContent blkProps+ parseFromString parseBlocks (raw ++ "\n")+ -- indent by specified number of spaces (or equiv. tabs) indentWith :: Int -> OrgParser String indentWith num = do@@ -356,6 +378,34 @@ else choice [ try (count num (char ' ')) , try (char '\t' >> count (num - tabStop) (char ' ')) ] +type SwitchOption = (Char, Maybe String)++orgArgWord :: OrgParser String+orgArgWord = many1 orgArgWordChar++-- | Parse code block arguments+-- TODO: We currently don't handle switches.+codeHeaderArgs :: OrgParser ([String], [(String, String)])+codeHeaderArgs = try $ do+ language <- skipSpaces *> orgArgWord+ _ <- skipSpaces *> (try $ switch `sepBy` (many1 spaceChar))+ parameters <- manyTill blockOption newline+ let pandocLang = translateLang language+ return $+ if hasRundocParameters parameters+ then ( [ pandocLang, rundocBlockClass ]+ , map toRundocAttrib (("language", language) : parameters)+ )+ else ([ pandocLang ], parameters)+ where hasRundocParameters = not . null++switch :: OrgParser SwitchOption+switch = try $ simpleSwitch <|> lineNumbersSwitch+ where+ simpleSwitch = (\c -> (c, Nothing)) <$> (oneOf "-+" *> letter)+ lineNumbersSwitch = (\ls -> ('l', Just ls)) <$>+ (string "-l \"" *> many1Till nonspaceChar (char '"'))+ translateLang :: String -> String translateLang "C" = "c" translateLang "C++" = "cpp"@@ -367,6 +417,39 @@ translateLang "sqlite" = "sql" translateLang cs = cs +-- | Prefix used for Rundoc classes and arguments.+rundocPrefix :: String+rundocPrefix = "rundoc-"++-- | The class-name used to mark rundoc blocks.+rundocBlockClass :: String+rundocBlockClass = rundocPrefix ++ "block"++blockOption :: OrgParser (String, String)+blockOption = try $ (,) <$> orgArgKey <*> orgParamValue++inlineBlockOption :: OrgParser (String, String)+inlineBlockOption = try $ (,) <$> orgArgKey <*> orgInlineParamValue++orgArgKey :: OrgParser String+orgArgKey = try $+ skipSpaces *> char ':'+ *> many1 orgArgWordChar++orgParamValue :: OrgParser String+orgParamValue = try $+ skipSpaces *> many1 (noneOf "\t\n\r ") <* skipSpaces++orgInlineParamValue :: OrgParser String+orgInlineParamValue = try $+ skipSpaces *> many1 (noneOf "\t\n\r ]") <* skipSpaces++orgArgWordChar :: OrgParser Char+orgArgWordChar = alphaNum <|> oneOf "-_"++toRundocAttrib :: (String, String) -> (String, String)+toRundocAttrib = first ("rundoc-" ++)+ commaEscaped :: String -> String commaEscaped (',':cs@('*':_)) = cs commaEscaped (',':cs@('#':'+':_)) = cs@@ -391,7 +474,7 @@ drawerStart :: OrgParser String drawerStart = try $- skipSpaces *> drawerName <* skipSpaces <* newline+ skipSpaces *> drawerName <* skipSpaces <* P.newline where drawerName = try $ char ':' *> validDrawerName <* char ':' validDrawerName = stringAnyCase "PROPERTIES" <|> stringAnyCase "LOGBOOK"@@ -401,7 +484,7 @@ drawerEnd :: OrgParser String drawerEnd = try $- skipSpaces *> stringAnyCase ":END:" <* skipSpaces <* newline+ skipSpaces *> stringAnyCase ":END:" <* skipSpaces <* P.newline --@@ -412,7 +495,7 @@ figure :: OrgParser (F Blocks) figure = try $ do (cap, nam) <- nameAndCaption- src <- skipSpaces *> selfTarget <* skipSpaces <* newline+ src <- skipSpaces *> selfTarget <* skipSpaces <* P.newline guard (isImageFilename src) return $ do cap' <- cap@@ -786,6 +869,7 @@ inline = choice [ whitespace , linebreak+ , cite , footnote , linkOrImage , anchor@@ -850,6 +934,51 @@ updateLastPreCharPos return . return $ B.space +cite :: OrgParser (F Inlines)+cite = try $ do+ guardEnabled Ext_citations+ (cs, raw) <- withRaw normalCite+ return $ (flip B.cite (B.text raw)) <$> cs++normalCite :: OrgParser (F [Citation])+normalCite = try $ char '['+ *> skipSpaces+ *> citeList+ <* skipSpaces+ <* char ']'++citeList :: OrgParser (F [Citation])+citeList = sequence <$> sepBy1 citation (try $ char ';' *> skipSpaces)++citation :: OrgParser (F Citation)+citation = try $ do+ pref <- prefix+ (suppress_author, key) <- citeKey+ suff <- suffix+ return $ do+ x <- pref+ y <- suff+ return $ Citation{ citationId = key+ , citationPrefix = B.toList x+ , citationSuffix = B.toList y+ , citationMode = if suppress_author+ then SuppressAuthor+ else NormalCitation+ , citationNoteNum = 0+ , citationHash = 0+ }+ where+ prefix = trimInlinesF . mconcat <$>+ manyTill inline (char ']' <|> (']' <$ lookAhead citeKey))+ suffix = try $ do+ hasSpace <- option False (notFollowedBy nonspaceChar >> return True)+ skipSpaces+ rest <- trimInlinesF . mconcat <$>+ many (notFollowedBy (oneOf ";]") *> inline)+ return $ if hasSpace+ then (B.space <>) <$> rest+ else rest+ footnote :: OrgParser (F Inlines) footnote = try $ inlineNote <|> referencedNote @@ -924,7 +1053,7 @@ selfTarget = try $ char '[' *> linkTarget <* char ']' linkTarget :: OrgParser String-linkTarget = enclosed (char '[') (char ']') (noneOf "\n\r[]")+linkTarget = enclosedByPair '[' ']' (noneOf "\n\r[]") applyCustomLinkFormat :: String -> OrgParser (F String) applyCustomLinkFormat link = do@@ -995,36 +1124,17 @@ inlineCodeBlock = try $ do string "src_" lang <- many1 orgArgWordChar- opts <- option [] $ enclosedByPair '[' ']' blockOption+ opts <- option [] $ enclosedByPair '[' ']' inlineBlockOption inlineCode <- enclosedByPair '{' '}' (noneOf "\n\r") let attrClasses = [translateLang lang, rundocBlockClass] let attrKeyVal = map toRundocAttrib (("language", lang) : opts) returnF $ B.codeWith ("", attrClasses, attrKeyVal) inlineCode- where enclosedByPair s e p = char s *> many1Till p (char e) --- | The class-name used to mark rundoc blocks.-rundocBlockClass :: String-rundocBlockClass = "rundoc-block"--blockOption :: OrgParser (String, String)-blockOption = try $ (,) <$> orgArgKey <*> orgArgValue--orgArgKey :: OrgParser String-orgArgKey = try $- skipSpaces *> char ':'- *> many1 orgArgWordChar- <* many1 spaceChar--orgArgValue :: OrgParser String-orgArgValue = try $- skipSpaces *> many1 orgArgWordChar- <* skipSpaces--orgArgWordChar :: OrgParser Char-orgArgWordChar = alphaNum <|> oneOf "-_"--toRundocAttrib :: (String, String) -> (String, String)-toRundocAttrib = first ("rundoc-" ++)+enclosedByPair :: Char -- ^ opening char+ -> Char -- ^ closing char+ -> OrgParser a -- ^ parser+ -> OrgParser [a]+enclosedByPair s e p = char s *> many1Till p (char e) emph :: OrgParser (F Inlines) emph = fmap B.emph <$> emphasisBetween '/'@@ -1218,13 +1328,6 @@ pos <- getPosition lastPrePos <- orgStateLastPreCharPos <$> getState return . fromMaybe True $ (== pos) <$> lastPrePos---- | Whether we are right after the end of a string-notAfterString :: OrgParser Bool-notAfterString = do- pos <- getPosition- lastStrPos <- orgStateLastStrPos <$> getState- return $ lastStrPos /= Just pos -- | Whether the parser is right after a forbidden border char notAfterForbiddenBorderChar :: OrgParser Bool
src/Text/Pandoc/Readers/RST.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Readers.RST- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Readers/TeXMath.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2007-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2007-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Readers.TeXMath- Copyright : Copyright (C) 2007-2010 John MacFarlane+ Copyright : Copyright (C) 2007-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Readers/Textile.hs view
@@ -1,5 +1,6 @@ {--Copyright (C) 2010 Paul Rivier <paul*rivier#demotera*com> | tr '*#' '.@'+Copyright (C) 2010-2014 Paul Rivier <paul*rivier#demotera*com> | tr '*#' '.@'+ and John MacFarlane This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +19,7 @@ {- | Module : Text.Pandoc.Readers.Textile- Copyright : Copyright (C) 2010-2012 Paul Rivier and John MacFarlane+ Copyright : Copyright (C) 2010-2014 Paul Rivier and John MacFarlane License : GNU GPL, version 2 or above Maintainer : Paul Rivier <paul*rivier#demotera*com>
src/Text/Pandoc/SelfContained.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2011 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2011-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.SelfContained- Copyright : Copyright (C) 2011 John MacFarlane+ Copyright : Copyright (C) 2011-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
@@ -1,7 +1,7 @@ {-# LANGUAGE DeriveDataTypeable, CPP, MultiParamTypeClasses, FlexibleContexts, ScopedTypeVariables #-} {--Copyright (C) 2006-2013 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -20,7 +20,7 @@ {- | Module : Text.Pandoc.Shared- Copyright : Copyright (C) 2006-2013 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>@@ -564,8 +564,10 @@ -> Meta addMetaField key val (Meta meta) = Meta $ M.insertWith combine key (toMetaValue val) meta- where combine newval (MetaList xs) = MetaList (xs ++ [newval])+ where combine newval (MetaList xs) = MetaList (xs ++ tolist newval) combine newval x = MetaList [x, newval]+ tolist (MetaList ys) = ys+ tolist y = [y] -- | Create 'Meta' from old-style title, authors, date. This is -- provided to ease the transition from the old API.
src/Text/Pandoc/Slides.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2012 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2012-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Slides- Copyright : Copyright (C) 2012 John MacFarlane+ Copyright : Copyright (C) 2012-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Templates.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE TypeSynonymInstances, FlexibleInstances, CPP, OverloadedStrings, GeneralizedNewtypeDeriving #-} {--Copyright (C) 2009-2013 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2009-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -20,7 +20,7 @@ {- | Module : Text.Pandoc.Templates- Copyright : Copyright (C) 2009-2013 John MacFarlane+ Copyright : Copyright (C) 2009-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/UTF8.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE CPP #-} {--Copyright (C) 2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2010-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.UTF8- Copyright : Copyright (C) 2010 John MacFarlane+ Copyright : Copyright (C) 2010-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/UUID.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2010-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.UUID- Copyright : Copyright (C) 2010 John MacFarlane+ Copyright : Copyright (C) 2010-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/AsciiDoc.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.AsciiDoc- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/ConTeXt.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2007-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2007-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.ConTeXt- Copyright : Copyright (C) 2007-2010 John MacFarlane+ Copyright : Copyright (C) 2007-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/Custom.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverlappingInstances, FlexibleInstances, OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-orphans #-}-{- Copyright (C) 2012 John MacFarlane <jgm@berkeley.edu>+{- Copyright (C) 2012-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.Custom- Copyright : Copyright (C) 2012 John MacFarlane+ Copyright : Copyright (C) 2012-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/Docbook.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.Docbook- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/Docx.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE ScopedTypeVariables #-} {--Copyright (C) 2012 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2012-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.Docx- Copyright : Copyright (C) 2012 John MacFarlane+ Copyright : Copyright (C) 2012-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/EPUB.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE PatternGuards, CPP, ScopedTypeVariables #-} {--Copyright (C) 2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2010-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.EPUB- Copyright : Copyright (C) 2010 John MacFarlane+ Copyright : Copyright (C) 2010-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/HTML.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE OverloadedStrings, CPP #-} {-# OPTIONS_GHC -fno-warn-deprecations #-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -20,7 +20,7 @@ {- | Module : Text.Pandoc.Writers.HTML- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/LaTeX.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.LaTeX- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/Man.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2007-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2007-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Writers.Man- Copyright : Copyright (C) 2007-2010 John MacFarlane+ Copyright : Copyright (C) 2007-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/Markdown.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings, TupleSections, ScopedTypeVariables #-} {--Copyright (C) 2006-2013 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.Markdown- Copyright : Copyright (C) 2006-2013 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/MediaWiki.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2008-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2008-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Writers.MediaWiki- Copyright : Copyright (C) 2008-2010 John MacFarlane+ Copyright : Copyright (C) 2008-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/Native.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.Native- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/ODT.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE ScopedTypeVariables #-} {--Copyright (C) 2008-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2008-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.ODT- Copyright : Copyright (C) 2008-2010 John MacFarlane+ Copyright : Copyright (C) 2008-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/OPML.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2013 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2013-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Writers.OPML- Copyright : Copyright (C) 2013 John MacFarlane+ Copyright : Copyright (C) 2013-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/OpenDocument.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE PatternGuards, OverloadedStrings #-} {--Copyright (C) 2008-2010 Andrea Rossato <andrea.rossato@ing.unitn.it>-and John MacFarlane.+Copyright (C) 2008-2014 Andrea Rossato <andrea.rossato@ing.unitn.it>+ and John MacFarlane. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -20,7 +20,7 @@ {- | Module : Text.Pandoc.Writers.OpenDocument- Copyright : Copyright (C) 2008-2010 Andrea Rossato and John MacFarlane+ Copyright : Copyright (C) 2008-2014 Andrea Rossato and John MacFarlane License : GNU GPL, version 2 or above Maintainer : Andrea Rossato <andrea.rossato@ing.unitn.it>
src/Text/Pandoc/Writers/Org.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2006-2010 Puneeth Chaganti <punchagan@gmail.com>+Copyright (C) 2010-2014 Puneeth Chaganti <punchagan@gmail.com>+ and John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +20,7 @@ {- | Module : Text.Pandoc.Writers.Org- Copyright : Copyright (C) 2010 Puneeth Chaganti+ Copyright : Copyright (C) 2010-2014 Puneeth Chaganti and John MacFarlane License : GNU GPL, version 2 or above Maintainer : Puneeth Chaganti <punchagan@gmail.com>
src/Text/Pandoc/Writers/RST.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.RST- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/RTF.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Writers.RTF- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2013 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2013-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.Shared- Copyright : Copyright (C) 2013 John MacFarlane+ Copyright : Copyright (C) 2013-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/Texinfo.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} {--Copyright (C) 2008-2010 John MacFarlane and Peter Wang+Copyright (C) 2008-2014 John MacFarlane and Peter Wang This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -19,7 +19,7 @@ {- | Module : Text.Pandoc.Writers.Texinfo- Copyright : Copyright (C) 2008-2010 John MacFarlane and Peter Wang+ Copyright : Copyright (C) 2008-2014 John MacFarlane and Peter Wang License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/Writers/Textile.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2010-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.Writers.Textile- Copyright : Copyright (C) 2010 John MacFarlane+ Copyright : Copyright (C) 2010-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
src/Text/Pandoc/XML.hs view
@@ -1,5 +1,5 @@ {--Copyright (C) 2006-2010 John MacFarlane <jgm@berkeley.edu>+Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by@@ -18,7 +18,7 @@ {- | Module : Text.Pandoc.XML- Copyright : Copyright (C) 2006-2010 John MacFarlane+ Copyright : Copyright (C) 2006-2014 John MacFarlane License : GNU GPL, version 2 or above Maintainer : John MacFarlane <jgm@berkeley.edu>
tests/Tests/Readers/Org.hs view
@@ -225,6 +225,28 @@ ] ) "echo 'Hello, World'")++ , "Citation" =:+ "[@nonexistent]" =?>+ let citation = Citation+ { citationId = "nonexistent"+ , citationPrefix = []+ , citationSuffix = []+ , citationMode = NormalCitation+ , citationNoteNum = 0+ , citationHash = 0}+ in (para $ cite [citation] "[@nonexistent]")++ , "Citation containing text" =:+ "[see @item1 p. 34-35]" =?>+ let citation = Citation+ { citationId = "item1"+ , citationPrefix = [Str "see"]+ , citationSuffix = [Space ,Str "p.",Space,Str "34-35"]+ , citationMode = NormalCitation+ , citationNoteNum = 0+ , citationHash = 0}+ in (para $ cite [citation] "[see @item1 p. 34-35]") ] , testGroup "Meta Information" $@@ -822,6 +844,20 @@ in mconcat [ para $ spcSep [ "Low", "German", "greeting" ] , codeBlockWith attr' code' ]+ , "Source block with rundoc/babel arguments" =:+ unlines [ "#+BEGIN_SRC emacs-lisp :exports both"+ , "(progn (message \"Hello, World!\")"+ , " (+ 23 42))"+ , "#+END_SRC" ] =?>+ let classes = [ "commonlisp" -- as kate doesn't know emacs-lisp syntax+ , "rundoc-block"+ ]+ params = [ ("rundoc-language", "emacs-lisp")+ , ("rundoc-exports", "both")+ ]+ code' = unlines [ "(progn (message \"Hello, World!\")"+ , " (+ 23 42))" ]+ in codeBlockWith ("", classes, params) code' , "Example block" =: unlines [ "#+begin_example"@@ -906,5 +942,26 @@ (unlines [ "fmap id = id" , "fmap (p . q) = (fmap p) . (fmap q)" ])))++ , "Convert blank lines in blocks to single newlines" =:+ unlines [ "#+begin_html"+ , ""+ , "<span>boring</span>"+ , ""+ , "#+end_html"+ ] =?>+ rawBlock "html" "\n<span>boring</span>\n\n"++ , "Non-letter chars in source block parameters" =:+ unlines [ "#+BEGIN_SRC C :tangle xxxx.c :city Zürich"+ , "code body"+ , "#+END_SRC"+ ] =?>+ let classes = [ "c", "rundoc-block" ]+ params = [ ("rundoc-language", "C")+ , ("rundoc-tangle", "xxxx.c")+ , ("rundoc-city", "Zürich")+ ]+ in codeBlockWith ( "", classes, params) "code body\n" ] ]