/usr/share/gitit-0.10.0.1/plugins/Subst.hs is in gitit 0.10.0.1-1+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | -- Usage: a paragraph containing just [My page](!subst)
-- will be replaced by the contents of My page.
--
-- Limitations: it is assumed that My page is
-- formatted with markdown, and contains no metadata.
module Subst (plugin) where
import Control.Monad.CatchIO (try)
import Data.FileStore (FileStoreError, retrieve)
import Text.Pandoc (defaultParserState, readMarkdown)
import Network.Gitit.ContentTransformer (inlinesToString)
import Network.Gitit.Interface
import Network.Gitit.Framework (filestoreFromConfig)
plugin :: Plugin
plugin = mkPageTransformM substituteIntoBlock
substituteIntoBlock :: [Block] -> PluginM [Block]
substituteIntoBlock ((Para [Link ref ("!subst", _)]):xs) =
do let target = inlinesToString ref
cfg <- askConfig
let fs = filestoreFromConfig cfg
article <- try $ liftIO (retrieve fs (target ++ ".page") Nothing)
case article :: Either FileStoreError String of
Left _ -> let txt = Str ("[" ++ target ++ "](!subst)")
alt = "'" ++ target ++ "' doesn't exist. Click here to create it."
lnk = Para [Link [txt] (target,alt)]
in (lnk :) `fmap` substituteIntoBlock xs
Right a -> let (Pandoc _ content) = readMarkdown defaultParserState a
in (content ++) `fmap` substituteIntoBlock xs
substituteIntoBlock (x:xs) = (x:) `fmap` substituteIntoBlock xs
substituteIntoBlock [] = return []
|