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 @@
-
+