packages feed

mdoc-0.6.0.0: src/Mdoc/Data/Named.hs

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

import Mdoc.Prelude

import Data.Aeson (object, (.=))
import Data.Text qualified as T
import Mdoc.Data.Page

data Named = Named
  { name :: Text
  , description :: Text
  , page :: Page
  }
  deriving stock (Eq, Generic, Show)

instance ToJSON Named where
  toJSON named =
    object
      [ "title" .= T.toUpper (esc $ named.name)
      , "name" .= esc named.name
      , "description" .= esc named.description
      , "page" .= named.page
      ]

name :: Text -> Text -> Page -> Named
name n description page = Named {name = n, description, page}