summaryrefslogtreecommitdiff
path: root/plugins/IncludeFilePlugin.hs
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/IncludeFilePlugin.hs')
-rw-r--r--plugins/IncludeFilePlugin.hs19
1 files changed, 19 insertions, 0 deletions
diff --git a/plugins/IncludeFilePlugin.hs b/plugins/IncludeFilePlugin.hs
new file mode 100644
index 000000000..40a8ce34d
--- /dev/null
+++ b/plugins/IncludeFilePlugin.hs
@@ -0,0 +1,19 @@
+module IncludeFilePlugin (transform) where
+import Text.Pandoc
+import Text.Pandoc.Shared
+import Control.Monad
+
+-- This plugin allows you to include the contents of an
+-- external file in a delimited code block like this:
+--
+-- ~~~ {include="filename"}
+-- ~~~
+--
+-- Trailing newlines are trimmed.
+
+transform :: Block -> IO Block
+transform cb@(CodeBlock (id, classes, namevals) contents) =
+ case lookup "include" namevals of
+ Just f -> return . (CodeBlock (id, classes, namevals) . stripTrailingNewlines) =<< readFile f
+ Nothing -> return cb
+transform x = return x