module HsDev.Symbols.Documented ( Documented(..), defaultDetailed ) where import Data.Text (unpack) import HsDev.Symbols.Class -- | Documented symbol class Symbol a => Documented a where brief :: a -> String detailed :: a -> String detailed = unlines . defaultDetailed -- | Default detailed docs defaultDetailed :: Documented a => a -> [String] defaultDetailed s = header ++ docs ++ loc where header = [brief s, ""] docs = maybe [] (return . unpack) $ symbolDocs s loc | null mloc = [] | otherwise = ["Defined at " ++ mloc] mloc = show (symbolLocation s)