diff options
| -rw-r--r-- | haddock-api/haddock-api.cabal | 1 | ||||
| -rw-r--r-- | haddock-api/src/Haddock/Backends/Xhtml/Specialize.hs | 21 | ||||
| -rw-r--r-- | haddock.cabal | 1 | 
3 files changed, 23 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 diff --git a/haddock.cabal b/haddock.cabal index b0c6c34f..4ea2a82a 100644 --- a/haddock.cabal +++ b/haddock.cabal @@ -97,6 +97,7 @@ executable haddock        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  | 
