git.iko.soy/typeable/pandoc
on master help sign in
Fixed 'authors' metadata parsing in reST.

Semicolons separate different authors.

commit243c56a880054bc11ee2007f9ab77174fff1d40f authorJohn MacFarlane <fiddlosopher@gmail.com> dateTue 25 Jun 2013, 22:32 (13 years ago) parent70eeeb8
3 files changed+25−8
src/Text/Pandoc/Readers/RST.hs+22−1 tests/rst-reader.native+2−5 tests/rst-reader.rst+1−2
src/Text/Pandoc/Readers/RST.hs+22−1
@@ -109,8 +109,29 @@ titleTransform (bs, meta) =
109109 _ -> (bs', meta')
110110
111111metaFromDefList :: [([Inline], [[Block]])] -> Meta -> Meta
112−metaFromDefList ds meta = foldr f meta ds
112+metaFromDefList ds meta = adjustAuthors $ foldr f meta ds
113113 where f (k,v) = setMeta (map toLower $ stringify k) (mconcat $ map fromList v)
114+ adjustAuthors (Meta metamap) = Meta $ M.adjust toPlain "author"
115+ $ M.adjust toPlain "date"
116+ $ M.adjust toPlain "title"
117+ $ M.adjust splitAuthors "authors"
118+ $ metamap
119+ toPlain (MetaBlocks [Para xs]) = MetaInlines xs
120+ toPlain x = x
121+ splitAuthors (MetaBlocks [Para xs]) = MetaList $ map MetaInlines
122+ $ splitAuthors' xs
123+ splitAuthors x = x
124+ splitAuthors' = map normalizeSpaces .
125+ splitOnSemi . concatMap factorSemi
126+ splitOnSemi = splitBy (==Str ";")
127+ factorSemi (Str []) = []
128+ factorSemi (Str s) = case break (==';') s of
129+ (xs,[]) -> [Str xs]
130+ (xs,';':ys) -> Str xs : Str ";" :
131+ factorSemi (Str ys)
132+ (xs,ys) -> Str xs :
133+ factorSemi (Str ys)
134+ factorSemi x = [x]
114135
115136parseRST :: RSTParser Pandoc
116137parseRST = do
tests/rst-reader.native+2−5
@@ -1,8 +1,5 @@
1−Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite",Str ":",Space,Str "Subtitle"], docAuthors = [[Str "John",Space,Str "MacFarlane"],[Str "Anonymous"]], docDate = [Str "July",Space,Str "17,",Space,Str "2006"]})
2−[DefinitionList
3− [([Str "Revision"],
4− [[Para [Str "3"]]])]
5−,Header 1 ("",[],[]) [Str "Level",Space,Str "one",Space,Str "header"]
1+Pandoc (Meta {unMeta = fromList [("authors",MetaList [MetaInlines [Str "John",Space,Str "MacFarlane"],MetaInlines [Str "Anonymous"]]),("date",MetaInlines [Str "July",Space,Str "17,",Space,Str "2006"]),("revision",MetaBlocks [Para [Str "3"]]),("subtitle",MetaInlines [Str "Subtitle"]),("title",MetaInlines [Str "Pandoc",Space,Str "Test",Space,Str "Suite"])]})
2+[Header 1 ("",[],[]) [Str "Level",Space,Str "one",Space,Str "header"]
63,Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "set",Space,Str "of",Space,Str "tests",Space,Str "for",Space,Str "pandoc.",Space,Str "Most",Space,Str "of",Space,Str "them",Space,Str "are",Space,Str "adapted",Space,Str "from",Space,Str "John",Space,Str "Gruber\8217s",Space,Str "markdown",Space,Str "test",Space,Str "suite."]
74,Header 2 ("",[],[]) [Str "Level",Space,Str "two",Space,Str "header"]
85,Header 3 ("",[],[]) [Str "Level",Space,Str "three"]
tests/rst-reader.rst+1−2
@@ -3,8 +3,7 @@ Pandoc Test Suite
33Subtitle
44^^^^^^^^
55
6−:Author: John MacFarlane
7−:Author: Anonymous
6+:Authors: John MacFarlane; Anonymous
87:Date: July 17, 2006
98:Revision: 3
109