summaryrefslogtreecommitdiff
path: root/src/Expression.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2026-10-30 20:05:36 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2026-10-30 20:22:23 +0100
commit5f497fe9e20cc414113f46b5b97a88e4cb77aef9 (patch)
treeb083fe04ecd0a73107e186e7098fdbc610e4c23a /src/Expression.hs
parent09df29c85950e4908dbabeceb503ce3764f32561 (diff)
Last tag selection based on creation time
Diffstat (limited to 'src/Expression.hs')
-rw-r--r--src/Expression.hs9
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