{-# 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 Comparison_String Account | Account_Tag Comparison_String String (Maybe (Comparison_String, String)) | Amount (Comparison_Num, Comparison_Num_Absolute) Amount | And Filter Filter | Any | Balance (Comparison_Num, Comparison_Num_Absolute) Amount | Commodity Comparison_String String | Date Date.Span | Date2 Date.Span | Depth Comparison_Num Int | Description Comparison_String String | None | Not Filter | Or Filter Filter | Real Bool | Status Bool | Tag Comparison_String Tag.Name (Maybe (Comparison_String, Tag.Value)) deriving (Data, Eq, Show, Typeable) data Comparison_Num = Comparison_Num_Lt | Comparison_Num_Lt_Eq | Comparison_Num_Gt | Comparison_Num_Gt_Eq | Comparison_Num_Eq deriving (Data, Eq, Show, Typeable) type Comparison_Num_Absolute = Bool data Comparison_String = Comparison_String_Eq | Comparison_String_Regexp deriving (Data, Eq, Show, Typeable)