@@ -55,20 +55,35 @@ metaLine = mempty <$ metaLineStart <* (optionLine <|> declarationLine)
56declarationLine :: OrgParser ()
56declarationLine :: OrgParser ()
57declarationLine = try $ do
57declarationLine = try $ do
58− key <- metaKey
58+ key <- map toLower <$> metaKey
59− value <- metaInlines
59+ value <- metaValue key
60 updateState $ \st ->
60 updateState $ \st ->
61 let meta' = B.setMeta key <$> value <*> pure nullMeta
61 let meta' = B.setMeta key <$> value <*> pure nullMeta
62 in st { orgStateMeta = orgStateMeta st <> meta' }
62 in st { orgStateMeta = orgStateMeta st <> meta' }
64−metaInlines :: OrgParser (F MetaValue)
65−metaInlines = fmap (MetaInlines . B.toList) <$> inlinesTillNewline
67metaKey :: OrgParser String
64metaKey :: OrgParser String
68metaKey = map toLower <$> many1 (noneOf ": \n\r")
65metaKey = map toLower <$> many1 (noneOf ": \n\r")
69 <* char ':'
66 <* char ':'
70 <* skipSpaces
67 <* skipSpaces
69+metaValue :: String -> OrgParser (F MetaValue)
72+ "author" -> metaInlines
73+ "title" -> metaInlines
74+ "date" -> metaInlines
77+metaInlines :: OrgParser (F MetaValue)
78+metaInlines = fmap (MetaInlines . B.toList) <$> inlinesTillNewline
80+metaString :: OrgParser (F MetaValue)
81+metaString = return . MetaString <$> anyLine
72optionLine :: OrgParser ()
87optionLine :: OrgParser ()
73optionLine = try $ do
88optionLine = try $ do
74 key <- metaKey
89 key <- metaKey