{-# LANGUAGE DeriveDataTypeable #-} module Hcompta.Model.Filter where import Data.Data import Data.Typeable () import qualified Hcompta.Model.Account as Account () import Hcompta.Model.Account (Account) import qualified Hcompta.Model.Amount as Amount () import Hcompta.Model.Amount (Amount) import qualified Hcompta.Model.Date as Date import qualified Hcompta.Model.Transaction.Tag as Tag -- * The 'Filter' type data Filter = Account Comp_String Account | Account_Tag Comp_String String (Maybe (Comp_String, String)) | Amount Comp_Num Comp_Num_Absolute Amount | And Filter Filter | Any | Balance Comp_Num Comp_Num_Absolute Amount | Date Date.Span | Depth Comp_Num Int | Description Comp_String String | None | Not Filter | Or Filter Filter | Real Bool | Status Bool | Tag Comp_String Tag.Name (Maybe (Comp_String, Tag.Value)) | Unit Comp_String String deriving (Data, Eq, Show, Typeable) data Comp_Num = Comp_Num_Lt | Comp_Num_Lt_Eq | Comp_Num_Gt | Comp_Num_Gt_Eq | Comp_Num_Eq deriving (Data, Eq, Show, Typeable) type Comp_Num_Absolute = Bool data Comp_String = Comp_String_Eq | Comp_String_Regexp deriving (Data, Eq, Show, Typeable)