From d19b353bfb66462bb72c324aa49083015485889a Mon Sep 17 00:00:00 2001 From: Simon Michael Date: Wed, 24 Jul 2024 11:06:13 +0100 Subject: [PATCH] imp: improve bad regexp error message Eg '(?:foo)' is not malformed, it's just not supported. https://hledger.org/hledger.html#hledgers-regular-expressions --- hledger-lib/Hledger/Reports/ReportOptions.hs | 2 +- hledger-lib/Hledger/Utils/Regex.hs | 2 +- hledger/test/errors/README.md | 2 +- hledger/test/errors/parseable-regexps.test | 2 +- hledger/test/query-expr.test | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hledger-lib/Hledger/Reports/ReportOptions.hs b/hledger-lib/Hledger/Reports/ReportOptions.hs index 445adb51c..6f74e486f 100644 --- a/hledger-lib/Hledger/Reports/ReportOptions.hs +++ b/hledger-lib/Hledger/Reports/ReportOptions.hs @@ -817,7 +817,7 @@ makeHledgerClassyLenses ''ReportSpec -- >>> _rsQuery <$> setEither querystring ["assets"] defreportspec -- Right (Acct (RegexpCI "assets")) -- >>> _rsQuery <$> setEither querystring ["(assets"] defreportspec --- Left "This regular expression is malformed, please correct it:\n(assets" +-- Left "This regular expression is invalid or unsupported, please correct it:\n(assets" -- >>> _rsQuery $ set querystring ["assets"] defreportspec -- Acct (RegexpCI "assets") -- >>> _rsQuery $ set querystring ["(assets"] defreportspec diff --git a/hledger-lib/Hledger/Utils/Regex.hs b/hledger-lib/Hledger/Utils/Regex.hs index 0b39c85a5..6e65f115c 100644 --- a/hledger-lib/Hledger/Utils/Regex.hs +++ b/hledger-lib/Hledger/Utils/Regex.hs @@ -136,7 +136,7 @@ toRegexCI = memo $ \s -> mkRegexErr s (RegexpCI s <$> makeRegexOptsM defaultComp -- | Make a nice error message for a regexp error. mkRegexErr :: Text -> Maybe a -> Either RegexError a mkRegexErr s = maybe (Left errmsg) Right - where errmsg = T.unpack $ "This regular expression is malformed, please correct it:\n" <> s + where errmsg = T.unpack $ "This regular expression is invalid or unsupported, please correct it:\n" <> s -- Convert a Regexp string to a compiled Regex, throw an error toRegex' :: Text -> Regexp diff --git a/hledger/test/errors/README.md b/hledger/test/errors/README.md index 4df0f3c78..0db81ed00 100644 --- a/hledger/test/errors/README.md +++ b/hledger/test/errors/README.md @@ -268,7 +268,7 @@ hledger: Error: /Users/simon/src/hledger/hledger/test/errors/./parseable-regexps 3 | alias /(/ = a | ^ -This regular expression is malformed, please correct it: +This regular expression is invalid or unsupported, please correct it: ( ``` diff --git a/hledger/test/errors/parseable-regexps.test b/hledger/test/errors/parseable-regexps.test index cb7aa167f..e1382d86b 100644 --- a/hledger/test/errors/parseable-regexps.test +++ b/hledger/test/errors/parseable-regexps.test @@ -4,7 +4,7 @@ $$$ hledger check -f parseable-regexps.j 3 \| alias \/\(\/ = a \| \^ -This regular expression is malformed, please correct it: +This regular expression is invalid or unsupported, please correct it: \( / diff --git a/hledger/test/query-expr.test b/hledger/test/query-expr.test index ead6d525c..7445035f2 100644 --- a/hledger/test/query-expr.test +++ b/hledger/test/query-expr.test @@ -130,7 +130,7 @@ $ hledger -f - print expr:"not tag:transactiontag=B" # ** 9. Having parentheses directly follow 'not' sees 'not' as part of a query. $ hledger -f - print expr:"not(tag:transactiontag=B)" >2 -hledger: Error: This regular expression is malformed, please correct it: +hledger: Error: This regular expression is invalid or unsupported, please correct it: not(tag:transactiontag=B >=1