packages feed

mdoc-0.1.0.0: src/Mdoc/UpdateMdocdate.hs

-- |
--
-- Module      : Mdoc.UpdateMdocdate
-- Copyright   : (c) 2026 Patrick Brisbin
-- License     : AGPL-3
-- Maintainer  : pbrisbin@gmail.com
-- Stability   : experimental
-- Portability : POSIX
module Mdoc.UpdateMdocdate
  ( updateMdocdate
  , updateMdocdateTo
  ) where

import Mdoc.Prelude

import Data.Time (Day, getCurrentTime, utctDay)
import Mdoc (Mdoc)
import Mdoc.MacroArg (_Mdocdate)
import Mdoc.MdocLine (_Dd)
import Mdoc.Optics

updateMdocdate :: MonadIO m => Mdoc -> m Mdoc
updateMdocdate mdoc = do
  d <- liftIO $ utctDay <$> getCurrentTime
  pure $ updateMdocdateTo d mdoc

updateMdocdateTo :: Day -> Mdoc -> Mdoc
updateMdocdateTo d = field @"lines" % traversed % _Dd % traversed % _Mdocdate ?~ d