aboutsummaryrefslogtreecommitdiff
path: root/haddock-api
diff options
context:
space:
mode:
authorƁukasz Hanuszczak <lukasz.hanuszczak@gmail.com>2015-07-10 16:23:15 +0200
committerMateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>2015-08-21 18:22:29 +0100
commite4740dd872d1110247557eb7b20124c22e427789 (patch)
treebfeab850ba099634d72a1c16a1df0a863b5edb84 /haddock-api
parentdc25b7099a0d54c03bdf51dfb9a4e286942d9c31 (diff)
Create simple utility module for type specialization.
Diffstat (limited to 'haddock-api')
-rw-r--r--haddock-api/haddock-api.cabal1
-rw-r--r--haddock-api/src/Haddock/Backends/Xhtml/Specialize.hs21
2 files changed, 22 insertions, 0 deletions
diff --git a/haddock-api/haddock-api.cabal b/haddock-api/haddock-api.cabal
index bfdb2179..abe5adbe 100644
--- a/haddock-api/haddock-api.cabal
+++ b/haddock-api/haddock-api.cabal
@@ -75,6 +75,7 @@ library
Haddock.Backends.Xhtml.DocMarkup
Haddock.Backends.Xhtml.Layout
Haddock.Backends.Xhtml.Names
+ Haddock.Backends.Xhtml.Specialize
Haddock.Backends.Xhtml.Themes
Haddock.Backends.Xhtml.Types
Haddock.Backends.Xhtml.Utils
diff --git a/haddock-api/src/Haddock/Backends/Xhtml/Specialize.hs b/haddock-api/src/Haddock/Backends/Xhtml/Specialize.hs
new file mode 100644
index 00000000..a0d64c0f
--- /dev/null
+++ b/haddock-api/src/Haddock/Backends/Xhtml/Specialize.hs
@@ -0,0 +1,21 @@
+{-# LANGUAGE FlexibleContexts #-}
+
+
+module Haddock.Backends.Xhtml.Specialize (specialize) where
+
+
+import Haddock.Syb
+
+import GHC
+
+import Data.Data
+
+
+specialize :: (Eq name, Data (HsType name))
+ => name -> HsType name -> HsType name -> HsType name
+specialize name details = everywhere (mkT $ specialize' name details)
+
+specialize' :: Eq name => name -> HsType name -> HsType name -> HsType name
+specialize' name details (HsTyVar name') | name == name' = details
+specialize' _ _ typ = typ
+ \ No newline at end of file