{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Logging.Types.Filter ( Filter(..), Filterer ) where
import Data.List (stripPrefix)
import Data.String
import Prelude hiding (filter)
import Logging.Types.Class.Filterable
import Logging.Types.Logger
import Logging.Types.Record
newtype Filter = Filter Logger deriving (Read, Show, Eq)
instance IsString Filter where
fromString = Filter
instance Filterable Filter where
filter (Filter self) rcd@LogRecord{..}
| self == "" = True
| otherwise = case stripPrefix self logger of
Just "" -> True
Just ('.':_) -> True
_ -> False
type Filterer = [Filter]