parent
7c5b97816e
commit
4890d2bf90
@ -149,15 +149,22 @@ clipOrEllipsifyAccountName :: Int -> AccountName -> AccountName
|
|||||||
clipOrEllipsifyAccountName 0 = const "..."
|
clipOrEllipsifyAccountName 0 = const "..."
|
||||||
clipOrEllipsifyAccountName n = accountNameFromComponents . take n . accountNameComponents
|
clipOrEllipsifyAccountName n = accountNameFromComponents . take n . accountNameComponents
|
||||||
|
|
||||||
|
-- | Escape an AccountName for use within a regular expression.
|
||||||
|
-- >>> putStr $ escapeName "First?!#$*?$(*) !@^#*? %)*!@#"
|
||||||
|
-- First\?!#\$\*\?\$\(\*\) !@\^#\*\? %\)\*!@#
|
||||||
|
escapeName :: AccountName -> Regexp
|
||||||
|
escapeName = regexReplaceBy "[[?+|()*\\\\^$]" ("\\" <>)
|
||||||
|
. T.unpack
|
||||||
|
|
||||||
-- | Convert an account name to a regular expression matching it and its subaccounts.
|
-- | Convert an account name to a regular expression matching it and its subaccounts.
|
||||||
accountNameToAccountRegex :: AccountName -> Regexp
|
accountNameToAccountRegex :: AccountName -> Regexp
|
||||||
accountNameToAccountRegex "" = ""
|
accountNameToAccountRegex "" = ""
|
||||||
accountNameToAccountRegex a = printf "^%s(:|$)" (T.unpack a)
|
accountNameToAccountRegex a = printf "^%s(:|$)" (escapeName a)
|
||||||
|
|
||||||
-- | Convert an account name to a regular expression matching it but not its subaccounts.
|
-- | Convert an account name to a regular expression matching it but not its subaccounts.
|
||||||
accountNameToAccountOnlyRegex :: AccountName -> Regexp
|
accountNameToAccountOnlyRegex :: AccountName -> Regexp
|
||||||
accountNameToAccountOnlyRegex "" = ""
|
accountNameToAccountOnlyRegex "" = ""
|
||||||
accountNameToAccountOnlyRegex a = printf "^%s$" $ T.unpack a -- XXX pack
|
accountNameToAccountOnlyRegex a = printf "^%s$" $ escapeName a -- XXX pack
|
||||||
|
|
||||||
-- | Convert an exact account-matching regular expression to a plain account name.
|
-- | Convert an exact account-matching regular expression to a plain account name.
|
||||||
accountRegexToAccountName :: Regexp -> AccountName
|
accountRegexToAccountName :: Regexp -> AccountName
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user