diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2026-10-30 20:05:36 +0100 |
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2026-10-30 20:22:23 +0100 |
| commit | 5f497fe9e20cc414113f46b5b97a88e4cb77aef9 (patch) | |
| tree | b083fe04ecd0a73107e186e7098fdbc610e4c23a /src/Expression.hs | |
| parent | 09df29c85950e4908dbabeceb503ce3764f32561 (diff) | |
Last tag selection based on creation time
Diffstat (limited to 'src/Expression.hs')
| -rw-r--r-- | src/Expression.hs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/Expression.hs b/src/Expression.hs index 994912e..bf35f2a 100644 --- a/src/Expression.hs +++ b/src/Expression.hs @@ -31,6 +31,7 @@ import Data.Maybe import Data.Proxy import Data.Text (Text) import Data.Text qualified as T +import Data.Time.LocalTime import Data.Void import Text.Megaparsec @@ -277,6 +278,9 @@ parseRangeExpression = bimap errorBundlePretty id . runParser parser "" "highesttag" -> do pat <- parseTagPattern return $ SingleRevisionExpression $ StaticRef $ TagRef pat higherTag + "lasttag" -> do + pat <- parseTagPattern + return $ SingleRevisionExpression $ StaticRef $ TagRef pat laterTag _ -> unexpected $ Tokens $ NE.fromList $ chunkToTokens @Text Proxy tok , do @@ -306,3 +310,8 @@ higherTag t t' = Left $ read @Integer $ T.unpack s | otherwise = Right s + +laterTag :: Tag a -> Tag a -> Tag a +laterTag t t' + | zonedTimeToUTC (tagTime t) < zonedTimeToUTC (tagTime t') = t' + | otherwise = t |