@@ -25,6 +25,8 @@ import System.FilePath
2525import qualified Text.Pandoc as Pandoc
2626import qualified Text.Pandoc.Definition as Pandoc
2727
28+ import Debug.Trace
29+
2830main :: IO ()
2931main = hakyll $ do
3032 -- Necessary to have GitHub Pages point at the right domain
@@ -68,19 +70,48 @@ main = hakyll $ do
6870 <&> \ ident ->
6971 fromFilePath $ takeDirectory (takeDirectory (toFilePath ident)) </> " index.md"
7072 bread <- breadcrumbField [" index.html" , thisMessage]
73+
7174 pandocCompiler
7275 >>= loadAndApplyTemplate
7376 " templates/example.html"
7477 ( mconcat
7578 [ listField
7679 " files"
7780 ( mconcat
78- [ indexlessUrlField " url" ,
79- field " name" (pure . view _1 . itemBody),
80- -- TODO: pick the right language
81- field " beforeHighlighted" (maybe (pure " <not present>" ) (fmap (T. unpack . highlight " haskell" . T. pack) . fmap itemBody . load . itemIdentifier) . view _2 . itemBody),
82- field " afterHighlighted" (maybe (pure " <not present>" ) (fmap (T. unpack . highlight " haskell" . T. pack) . fmap itemBody . load . itemIdentifier) . view _3 . itemBody)
83- ]
81+ (
82+ let getName = view _1 . itemBody
83+ nameField = field " name" (pure . getName)
84+ beforeField =
85+ field " beforeHighlighted" $ \ item -> do
86+ let name = getName item
87+ case view _2 $ itemBody item of
88+ Nothing -> pure " <not present>"
89+ Just beforeItem -> do
90+ beforeText <- fmap itemBody $ load $ itemIdentifier beforeItem
91+ let language =
92+ case takeExtension name of
93+ " .hs" -> " haskell"
94+ _ -> " "
95+ pure $ T. unpack $ highlight language $ T. pack $ beforeText
96+ afterField =
97+ field " afterHighlighted" $ \ item -> do
98+ let name = getName item
99+ case view _2 $ itemBody item of
100+ Nothing -> pure " <not present>"
101+ Just afterItem -> do
102+ afterText <- fmap itemBody $ load $ itemIdentifier afterItem
103+ let language =
104+ case takeExtension name of
105+ " .hs" -> " haskell"
106+ _ -> " "
107+ pure $ T. unpack $ highlight language $ T. pack $ afterText
108+ in
109+
110+ [ indexlessUrlField " url" ,
111+ nameField,
112+ beforeField,
113+ afterField
114+ ])
84115 )
85116 (return files),
86117 defaultContext
0 commit comments