switch to readMaybe to handle values with leading number followed by non-number

readish ignores a trailing string after a number, but to support values
like "YYYY:MM:DD" which it makes sense to compare lexographically,
require the whole string to be parsed as a number in order to enable
numeric comparison.

Sponsored-by: Max Thoursie on Patreon
This commit is contained in:
Joey Hess 2022-12-22 14:26:35 -04:00
parent 6dcb7b8815
commit 2fa7656627
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 12 additions and 1 deletions

View file

@ -26,6 +26,7 @@ import qualified Data.Text as T
import Data.Time.Calendar
import Data.Time.Clock
import Data.Time.Clock.POSIX
import Text.Read
{- Adds metadata for a file that has just been ingested into the
- annex, but has not yet been committed to git.
@ -117,4 +118,4 @@ parseMetaDataMatcher p = (,)
in case (doubleval v, doubleval v') of
(Just d, Just d') -> d' `cmp` d
_ -> v' `cmp'` v
doubleval v = readish v :: Maybe Double
doubleval v = readMaybe v :: Maybe Double

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2022-12-22T18:30:46Z"
content="""
Thanks for double-checking. I have not tried your test but I think I see
what is going on from the pattern. Strings starting with a number but then
subsequently not a number were still being parsed to numbers and compared
numerically. I've fixed that now.
"""]]