From 3b5c0bc4a1f63afbbefa31bd33c192b5184c193f Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Fri, 29 Mar 2013 18:39:57 +0000 Subject: [PATCH] provide some regex-posix-based utilities that perform better than regexpr --- hledger-lib/Hledger/Utils.hs | 9 +++++++++ hledger-lib/hledger-lib.cabal | 1 + 2 files changed, 10 insertions(+) diff --git a/hledger-lib/Hledger/Utils.hs b/hledger-lib/Hledger/Utils.hs index 07fb23d7f..9c9b518ac 100644 --- a/hledger-lib/Hledger/Utils.hs +++ b/hledger-lib/Hledger/Utils.hs @@ -42,6 +42,7 @@ import System.FilePath((), isRelative) import Test.HUnit import Text.ParserCombinators.Parsec import Text.Printf +import Text.Regex import Text.RegexPR -- import qualified Data.Map as Map -- @@ -202,6 +203,7 @@ difforzero :: (Num a, Ord a) => a -> a -> a difforzero a b = maximum [(a - b), 0] -- regexps +-- Note many of these will die on malformed regexps. -- regexMatch :: String -> String -> MatchFun Maybe regexMatch r s = matchRegexPR r s @@ -232,6 +234,13 @@ regexToCaseInsensitive r = "(?i)"++ r regexSplit :: String -> String -> [String] regexSplit = splitRegexPR +-- regex-compat (regex-posix) functions that perform better than regexpr. +regexMatchesRegexCompat :: String -> String -> Bool +regexMatchesRegexCompat r = isJust . matchRegex (mkRegex r) + +regexMatchesCIRegexCompat :: String -> String -> Bool +regexMatchesCIRegexCompat r = isJust . matchRegex (mkRegexWithOpts r True False) + -- lists splitAtElement :: Eq a => a -> [a] -> [[a]] diff --git a/hledger-lib/hledger-lib.cabal b/hledger-lib/hledger-lib.cabal index 4a6665c67..6c017a390 100644 --- a/hledger-lib/hledger-lib.cabal +++ b/hledger-lib/hledger-lib.cabal @@ -66,6 +66,7 @@ library ,old-locale ,old-time ,parsec + ,regex-compat == 0.95.* ,regexpr >= 0.5.1 ,safe >= 0.2 ,split >= 0.1 && < 0.3