diff --git a/data/templates b/data/templates index 25f999ad5..7ac22fea6 160000 --- a/data/templates +++ b/data/templates @@ -1 +1 @@ -Subproject commit 25f999ad52d110575590ba900c33b48486e9ac25 +Subproject commit 7ac22fea6399ce6fdac093fa9d163d09fc28d440 diff --git a/pandoc.cabal b/pandoc.cabal index ff142f304..7e8a87b23 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -38,22 +38,30 @@ Description: Pandoc is a Haskell library for converting from one markup only adding a reader or writer. Data-Files: -- templates - data/templates/default.html, data/templates/default.html5, - data/templates/default.docbook, data/templates/default.beamer, + data/templates/default.html, + data/templates/default.html5, + data/templates/default.docbook, + data/templates/default.beamer, data/templates/default.opendocument, + data/templates/default.opml, data/templates/default.latex, data/templates/default.context, data/templates/default.texinfo, data/templates/default.man, data/templates/default.markdown, - data/templates/default.rst, data/templates/default.plain, - data/templates/default.mediawiki, data/templates/default.rtf, - data/templates/default.s5, data/templates/default.slidy, + data/templates/default.rst, + data/templates/default.plain, + data/templates/default.mediawiki, + data/templates/default.rtf, + data/templates/default.s5, + data/templates/default.slidy, data/templates/default.slideous, data/templates/default.dzslides, data/templates/default.asciidoc, - data/templates/default.textile, data/templates/default.org, - data/templates/default.epub, data/templates/default.epub3, + data/templates/default.textile, + data/templates/default.org, + data/templates/default.epub, + data/templates/default.epub3, -- data for ODT writer data/reference.odt, -- data for docx writer @@ -172,6 +180,7 @@ Extra-Source-Files: tests/writer.rtf, tests/writer.texinfo, tests/writer.fb2, + tests/writer.opml, tests/lhs-test.native, tests/lhs-test-markdown.native, tests/lhs-test.markdown, diff --git a/src/Text/Pandoc/Writers/OPML.hs b/src/Text/Pandoc/Writers/OPML.hs index d6c0aa21a..f7eb9289a 100644 --- a/src/Text/Pandoc/Writers/OPML.hs +++ b/src/Text/Pandoc/Writers/OPML.hs @@ -37,19 +37,20 @@ import Text.Pandoc.Writers.HTML (writeHtmlString) import Text.Pandoc.Writers.Markdown (writeMarkdown) import Data.List ( intercalate ) import Text.Pandoc.Pretty +import Data.Time +import System.Locale (defaultTimeLocale) -- | Convert Pandoc document to string in OPML format. writeOPML :: WriterOptions -> Pandoc -> String writeOPML opts (Pandoc (Meta tit auths dat) blocks) = let title = writeHtmlInlines tit author = writeHtmlInlines $ intercalate [Space,Str ";",Space] auths - date = trim $ writeHtmlInlines dat + date = convertDate dat elements = hierarchicalize blocks colwidth = if writerWrapText opts then Just $ writerColumns opts else Nothing - render' = render colwidth - main = render' $ vcat (map (elementToOPML opts) elements) + main = render colwidth $ vcat (map (elementToOPML opts) elements) context = writerVariables opts ++ [ ("body", main) , ("title", title) @@ -63,6 +64,14 @@ writeHtmlInlines :: [Inline] -> String writeHtmlInlines ils = trim $ writeHtmlString def $ Pandoc (Meta [] [] []) [Plain ils] +-- date format: RFC 822: Thu, 14 Jul 2005 23:41:05 GMT +showDateTimeRFC822 :: UTCTime -> String +showDateTimeRFC822 = formatTime defaultTimeLocale "%a, %d %b %Y %X %Z" + +convertDate :: [Inline] -> String +convertDate ils = maybe "" showDateTimeRFC822 + $ parseTime defaultTimeLocale "%F" =<< (normalizeDate $ stringify ils) + -- | Convert an Element to OPML. elementToOPML :: WriterOptions -> Element -> Doc elementToOPML _ (Blk _) = empty @@ -73,7 +82,7 @@ elementToOPML opts (Sec _ _num _ title elements) = fromBlk _ = error "fromBlk called on non-block" (blocks, rest) = span isBlk elements attrs = [("text", writeHtmlInlines title)] ++ - [("_note", writeMarkdown opts (Pandoc (Meta [] [] []) + [("_note", writeMarkdown def (Pandoc (Meta [] [] []) (map fromBlk blocks))) | not (null blocks)] in inTags True "outline" attrs $ diff --git a/tests/Tests/Old.hs b/tests/Tests/Old.hs index c22fa9830..45c430c33 100644 --- a/tests/Tests/Old.hs +++ b/tests/Tests/Old.hs @@ -125,7 +125,9 @@ tests = [ testGroup "markdown" "mediawiki-reader.wiki" "mediawiki-reader.native" ] , testGroup "opml" - [ test "reader" ["-r", "opml", "-w", "native", "-s"] + [ test "basic" ["-r", "native", "-w", "opml", "--columns=78", "-s"] + "testsuite.native" "writer.opml" + , test "reader" ["-r", "opml", "-w", "native", "-s"] "opml-reader.opml" "opml-reader.native" ] , testGroup "other writers" $ map (\f -> testGroup f $ writerTests f) diff --git a/tests/opml-reader.native b/tests/opml-reader.native index 8a627c025..ddcb6d8d2 100644 --- a/tests/opml-reader.native +++ b/tests/opml-reader.native @@ -1,4 +1,4 @@ -Pandoc (Meta {docTitle = [Str "states.opml"], docAuthors = [[Str "Dave",Space,Str "Winer"]], docDate = [Str "Thu,",Space,Str "14",Space,Str "Jul",Space,Str "2005",Space,Str "23:41:05",Space,Str "GMT"]}) +Pandoc (Meta {docTitle = [Str "States"], docAuthors = [[Str "Dave",Space,Str "Winer"]], docDate = [Str "Thu,",Space,Str "14",Space,Str "Jul",Space,Str "2005",Space,Str "23:41:05",Space,Str "GMT"]}) [Header 1 ("",[],[]) [Str "United",Space,Str "States"] ,Header 2 ("",[],[]) [Str "Far",Space,Str "West"] ,Header 3 ("",[],[]) [Str "Alaska"] diff --git a/tests/opml-reader.opml b/tests/opml-reader.opml index 54dd592ea..18436e675 100644 --- a/tests/opml-reader.opml +++ b/tests/opml-reader.opml @@ -1,91 +1,83 @@ - + - - states.opml - Tue, 15 Mar 2005 16:35:45 GMT - Thu, 14 Jul 2005 23:41:05 GMT - Dave Winer - dave@scripting.com - 1, 6, 13, 16, 18, 20 - 1 - 106 - 106 - 558 - 479 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + States + Thu, 14 Jul 2005 23:41:05 GMT + Dave Winer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/writer.opml b/tests/writer.opml new file mode 100644 index 000000000..08d2a84ec --- /dev/null +++ b/tests/writer.opml @@ -0,0 +1,72 @@ + + + + Pandoc Test Suite + Mon, 17 Jul 2006 00:00:00 UTC + John MacFarlane ; Anonymous + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +