git.iko.soy/typeable/pandoc
on master help sign in
RST reader: handle "date::" directive.
bf583c3John MacFarlane
src/Text/Pandoc/Readers/RST.hs+10−1
@@ -27,7 +27,8 @@ import Data.Text (Text)
27import qualified Data.Text as T
27import qualified Data.Text as T
28import Text.Pandoc.Builder (Blocks, Inlines, fromList, setMeta, trimInlines)
28import Text.Pandoc.Builder (Blocks, Inlines, fromList, setMeta, trimInlines)
29import qualified Text.Pandoc.Builder as B
29import qualified Text.Pandoc.Builder as B
30−import Text.Pandoc.Class.PandocMonad (PandocMonad, fetchItem, readFileFromDirs)
30+import Text.Pandoc.Class.PandocMonad (PandocMonad, fetchItem,
31+ readFileFromDirs, getCurrentTime)
31import Text.Pandoc.CSV (CSVOptions (..), defaultCSVOptions, parseCSV)
32import Text.Pandoc.CSV (CSVOptions (..), defaultCSVOptions, parseCSV)
32import Text.Pandoc.Definition
33import Text.Pandoc.Definition
33import Text.Pandoc.Error
34import Text.Pandoc.Error
@@ -38,6 +39,7 @@ import Text.Pandoc.Parsing
38import Text.Pandoc.Shared
39import Text.Pandoc.Shared
39import qualified Text.Pandoc.UTF8 as UTF8
40import qualified Text.Pandoc.UTF8 as UTF8
40import Text.Printf (printf)
41import Text.Printf (printf)
42+import Data.Time.Format
41
43
42-- TODO:
44-- TODO:
43-- [ ] .. parsed-literal
45-- [ ] .. parsed-literal
@@ -682,6 +684,13 @@ directive' = do
682 parseFromString' parseBlocks body'
684 parseFromString' parseBlocks body'
683 "replace" -> B.para <$> -- consumed by substKey
685 "replace" -> B.para <$> -- consumed by substKey
684 parseInlineFromText (trim top)
686 parseInlineFromText (trim top)
687+ "date" -> B.para <$> do -- consumed by substKey
688+ t <- getCurrentTime
689+ let format = case T.unpack (T.strip top) of
690+ [] -> "%Y-%m-%d"
691+ x -> x
692+ return $ B.text $
693+ T.pack $ formatTime defaultTimeLocale format t
685 "unicode" -> B.para <$> -- consumed by substKey
694 "unicode" -> B.para <$> -- consumed by substKey
686 parseInlineFromText (trim $ unicodeTransform top)
695 parseInlineFromText (trim $ unicodeTransform top)
687 "compound" -> parseFromString' parseBlocks body'
696 "compound" -> parseFromString' parseBlocks body'