lib: matchesDescription, matchesPayeeWIP
This commit is contained in:
parent
3f095fb472
commit
bf328e4e3c
@ -44,6 +44,8 @@ module Hledger.Query (
|
||||
inAccountQuery,
|
||||
-- * matching
|
||||
matchesTransaction,
|
||||
matchesDescription,
|
||||
matchesPayeeWIP,
|
||||
matchesPosting,
|
||||
matchesAccount,
|
||||
matchesMixedAmount,
|
||||
@ -641,6 +643,33 @@ matchesTransaction (Tag n v) t = case (reString n, v) of
|
||||
("note", Just v) -> regexMatchText v $ transactionNote t
|
||||
(_, v) -> matchesTags n v $ transactionAllTags t
|
||||
|
||||
-- | Does the query match this transaction description ?
|
||||
-- Tests desc: terms, any other terms are ignored.
|
||||
matchesDescription :: Query -> Text -> Bool
|
||||
matchesDescription (Not q) d = not $ q `matchesDescription` d
|
||||
matchesDescription (Any) _ = True
|
||||
matchesDescription (None) _ = False
|
||||
matchesDescription (Or qs) d = any (`matchesDescription` d) $ filter queryIsDesc qs
|
||||
matchesDescription (And qs) d = all (`matchesDescription` d) $ filter queryIsDesc qs
|
||||
matchesDescription (Code _) _ = False
|
||||
matchesDescription (Desc r) d = regexMatchText r d
|
||||
matchesDescription (Acct _) _ = False
|
||||
matchesDescription (Date _) _ = False
|
||||
matchesDescription (Date2 _) _ = False
|
||||
matchesDescription (StatusQ _) _ = False
|
||||
matchesDescription (Real _) _ = False
|
||||
matchesDescription (Amt _ _) _ = False
|
||||
matchesDescription (Depth _) _ = False
|
||||
matchesDescription (Sym _) _ = False
|
||||
matchesDescription (Tag _ _) _ = False
|
||||
|
||||
-- | Does the query match this transaction payee ?
|
||||
-- Tests desc: (and payee: ?) terms, any other terms are ignored.
|
||||
-- XXX Currently an alias for matchDescription. I'm not sure if more is needed,
|
||||
-- There's some shenanigan with payee: and "payeeTag" to figure out.
|
||||
matchesPayeeWIP :: Query -> Payee -> Bool
|
||||
matchesPayeeWIP q p = matchesDescription q p
|
||||
|
||||
-- | Does the query match the name and optionally the value of any of these tags ?
|
||||
matchesTags :: Regexp -> Maybe Regexp -> [Tag] -> Bool
|
||||
matchesTags namepat valuepat = not . null . filter (matches namepat valuepat)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user