module Language.Ltml.HTML.References
(
addMaybeLabelToState
, buildEnumItemRefHtml
) where
import Control.Monad.Reader
import Control.Monad.State
import Language.Ltml.AST.Label (Label)
import Language.Ltml.HTML.Common
import Language.Ltml.HTML.FormatString (identifierFormat)
import Lucid
addMaybeLabelToState
:: Maybe Label -> Html () -> ReaderT ReaderState (State GlobalState) ()
addMaybeLabelToState :: Maybe Label
-> Html () -> ReaderT ReaderState (State GlobalState) ()
addMaybeLabelToState Maybe Label
mLabel Html ()
referenceHtml = case Maybe Label
mLabel of
Maybe Label
Nothing -> () -> ReaderT ReaderState (State GlobalState) ()
forall a. a -> ReaderT ReaderState (State GlobalState) a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
Just Label
label -> (GlobalState -> GlobalState)
-> ReaderT ReaderState (State GlobalState) ()
forall s (m :: * -> *). MonadState s m => (s -> s) -> m ()
modify (\GlobalState
s -> GlobalState
s {labels = (label, referenceHtml) : labels s})
buildEnumItemRefHtml :: Int -> ReaderT ReaderState (State GlobalState) (Html ())
buildEnumItemRefHtml :: Int -> ReaderT ReaderState (State GlobalState) (Html ())
buildEnumItemRefHtml Int
enumItemID = do
IdentifierFormat
enumIDFormatString <- (ReaderState -> IdentifierFormat)
-> ReaderT ReaderState (State GlobalState) IdentifierFormat
forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a
asks ReaderState -> IdentifierFormat
currentEnumIDFormatString
Html () -> ReaderT ReaderState (State GlobalState) (Html ())
forall a. a -> ReaderT ReaderState (State GlobalState) a
forall (m :: * -> *) a. Monad m => a -> m a
return (Html () -> ReaderT ReaderState (State GlobalState) (Html ()))
-> Html () -> ReaderT ReaderState (State GlobalState) (Html ())
forall a b. (a -> b) -> a -> b
$ IdentifierFormat -> Int -> Int -> Html ()
identifierFormat IdentifierFormat
enumIDFormatString Int
enumItemID Int
0