module Language.Haskell.Detector (detect) where import Language.Haskell.Inspector import Language.Haskell.Syntax bindingsOf :: Code -> [String] bindingsOf = orNil . withCode (concatMap bindings) where bindings (HsTypeSig _ [b] _) = [nameOf b] bindings (HsTypeDecl _ b _ _) = [nameOf b] bindings (HsPatBind _ (HsPVar n) _ _) = [nameOf n] bindings (HsFunBind cases) = map bindingInMatch cases bindings _ = [] detect :: Inspection -> Code -> [Binding] detect inspection code = filter (`inspection` code) $ bindingsOf code