packages feed

mdoc-0.1.0.0: src/Mdoc/Parse/Interpolation.hs

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

import Mdoc.Prelude

import Mdoc.Interpolation
import Mdoc.Parse

parseInterpolationArg :: Parser Interpolation
parseInterpolationArg =
  string "{{" *> choice names <* string "}}" <?> "valid interpolation"
 where
  names :: [Parser Interpolation]
  names = map (parseAs interpolationToText) [DocTitle, DocSection]

parseInterpolationLine :: Parser Interpolation
parseInterpolationLine =
  string "{{" *> choice (map try names) <* string "}}" <?> "valid interpolation"
 where
  names :: [Parser Interpolation]
  names =
    map
      (parseAs interpolationToText)
      [ Name
      , Synopsis
      , Description
      , Environment
      , Files
      , ExitStatus
      , SeeAlso
      ]