diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2016-08-29 14:10:56 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2016-08-29 14:10:56 +0200 |
commit | 153970bef5068f5a82943cc7a2bec79f04d31ae9 (patch) | |
tree | d1d9bb674d844f4d59013b32712552352c5fea27 | |
parent | bed5f700ceb91365018a4de6afea8a7c331688ae (diff) | |
download | pandoc-153970bef5068f5a82943cc7a2bec79f04d31ae9.tar.gz |
Org reader: read markup only for special meta keys
Most meta-keys should be read as normal string values, only a few are
interpreted as marked-up text.
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Meta.hs | 25 | ||||
-rw-r--r-- | tests/Tests/Readers/Org.hs | 4 |
2 files changed, 22 insertions, 7 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Meta.hs b/src/Text/Pandoc/Readers/Org/Meta.hs index e61947d43..8f0b9f6b5 100644 --- a/src/Text/Pandoc/Readers/Org/Meta.hs +++ b/src/Text/Pandoc/Readers/Org/Meta.hs @@ -55,20 +55,35 @@ metaLine = mempty <$ metaLineStart <* (optionLine <|> declarationLine) declarationLine :: OrgParser () declarationLine = try $ do - key <- metaKey - value <- metaInlines + key <- map toLower <$> metaKey + value <- metaValue key updateState $ \st -> let meta' = B.setMeta key <$> value <*> pure nullMeta in st { orgStateMeta = orgStateMeta st <> meta' } -metaInlines :: OrgParser (F MetaValue) -metaInlines = fmap (MetaInlines . B.toList) <$> inlinesTillNewline - metaKey :: OrgParser String metaKey = map toLower <$> many1 (noneOf ": \n\r") <* char ':' <* skipSpaces +metaValue :: String -> OrgParser (F MetaValue) +metaValue key = do + case key of + "author" -> metaInlines + "title" -> metaInlines + "date" -> metaInlines + _ -> metaString + +metaInlines :: OrgParser (F MetaValue) +metaInlines = fmap (MetaInlines . B.toList) <$> inlinesTillNewline + +metaString :: OrgParser (F MetaValue) +metaString = return . MetaString <$> anyLine + + +-- +-- export options +-- optionLine :: OrgParser () optionLine = try $ do key <- metaKey diff --git a/tests/Tests/Readers/Org.hs b/tests/Tests/Readers/Org.hs index 0a3f9c222..61c222919 100644 --- a/tests/Tests/Readers/Org.hs +++ b/tests/Tests/Readers/Org.hs @@ -478,8 +478,8 @@ tests = , "Description" =: "#+DESCRIPTION: Explanatory text" =?> - let description = toList . spcSep $ [ "Explanatory", "text" ] - meta = setMeta "description" (MetaInlines description) $ nullMeta + let description = "Explanatory text" + meta = setMeta "description" (MetaString description) $ nullMeta in Pandoc meta mempty , "Properties drawer" =: |