Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

28 lines (23 sloc) 1.04 kb
-- 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 Data.FileStore (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 ++ ".page"
cfg <- askConfig
let fs = filestoreFromConfig cfg
article <- liftIO (retrieve fs target Nothing)
let (Pandoc _ content) = readMarkdown defaultParserState article
(content ++) `fmap` substituteIntoBlock xs
substituteIntoBlock (x:xs) = (x:) `fmap` substituteIntoBlock xs
substituteIntoBlock [] = return []
Jump to Line
Something went wrong with that request. Please try again.