packages feed

mdoc-0.4.0.0: src/Mdoc/Data/Described.hs

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

import Mdoc.Prelude

import Data.Function (on)
import Mdoc.Data.Optionality
import Mdoc.Syntax

data Described a = Described
  { item :: a
  , optionality :: Optionality
  , multiple :: Bool
  , help :: Maybe Mdoc
  , example :: Maybe Mdoc
  }
  deriving stock (Foldable, Functor, Generic, Show, Traversable)
  deriving anyclass (ToJSON)

instance Eq a => Eq (Described a) where
  (==) = (==) `on` (.item)

instance Ord a => Ord (Described a) where
  compare = comparing (.item)