mdoc-0.1.0.0: src/Mdoc/MacroName.hs
-- |
--
-- Module : Mdoc.MacroName
-- Copyright : (c) 2026 Patrick Brisbin
-- License : AGPL-3
-- Maintainer : pbrisbin@gmail.com
-- Stability : experimental
-- Portability : POSIX
module Mdoc.MacroName
( MacroName (..)
, macroNameText
) where
import Mdoc.Prelude
import Data.Text qualified as T
data MacroName
= PercentA
| PercentB
| PercentC
| PercentD
| PercentI
| PercentJ
| PercentN
| PercentO
| PercentP
| PercentQ
| PercentR
| PercentT
| PercentU
| PercentV
| Ac
| Ad
| An
| Ao
| Ap
| Aq
| Ar
| At
| Bc
| Bd
| Bf
| Bk
| Bl
| Bq
| Brc
| Brq
| Bsx
| Bt
| Bx
| Cd
| Cm
| D1
| Db
| Dc
| Dd
| Dl
| Do
| Dq
| Dt
| Dv
| Dx
| Ec
| Ed
| Ef
| Ek
| El
| Em
| En
| Eo
| Er
| Es
| Ev
| Ex
| Fa
| Fc
| Fd
| Fl
| Fn
| Fo
| Fr
| Ft
| Fx
| Hf
| Ic
| In
| It
| Lb
| Li
| Lk
| Lp
| Ms
| Mt
| Nd
| Nm
| No
| Ns
| Nx
| Oc
| Oo
| Op
| Os
| Ot
| Ox
| Pa
| Pc
| Pf
| Po
| Pp
| Pq
| Qc
| Ql
| Qo
| Qq
| Re
| Rs
| Rv
| Sc
| Sh
| Sm
| So
| Sq
| Ss
| St
| Sx
| Sy
| Ta
| Tg
| Tn
| Ud
| Ux
| Va
| Vt
| Xc
| Xo
| Xr
| Troff'ad
| Troff'br
| Troff'sp
deriving stock (Bounded, Enum, Eq, Show)
macroNameText :: MacroName -> Text
macroNameText n = fromMaybe shown $ percent <|> troff <|> bug
where
shown = pack $ show n
percent = ("%" <>) <$> T.stripPrefix "Percent" shown
troff = T.stripPrefix "Troff'" shown
bug = T.stripPrefix "Bug" shown