packages feed

mdoc-0.1.0.0: src/Mdoc/Prelude.hs

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

import Prelude as X hiding (head, init, last, tail)

import Control.Applicative as X (Alternative, asum, (<|>))
import Control.Monad as X (guard, unless, void, when, (<=<))
import Control.Monad.IO.Class as X (MonadIO (..))
import Control.Monad.Trans as X (MonadTrans (..))
import Data.Bifunctor as X (bimap, first, second)
import Data.Foldable as X (for_, toList)
import Data.Foldable1 as X (foldMap1, maximumBy)
import Data.Function as X ((&))
import Data.Functor as X ((<&>))
import Data.Functor.Identity as X (Identity)
import Data.List.NonEmpty as X (NonEmpty (..), head, init, last, nonEmpty, tail)
import Data.List.NonEmpty.Extra as X ((|:))
import Data.Maybe as X (catMaybes, fromMaybe, isJust, isNothing, mapMaybe)
import Data.Ord as X (comparing)
import Data.Semigroup as X (sconcat)
import Data.Set as X (Set)
import Data.String as X (IsString (..))
import Data.Text as X (Text, pack, unpack)
import Data.Text qualified as T
import Data.Void as X (Void)
import GHC.Generics as X (Generic, Generically (..))

guarded :: Alternative f => (a -> Bool) -> a -> f a
guarded p a = a <$ guard (p a)

esc :: Text -> Text
esc =
  T.replace "\\n" "\\\\n"
    . T.replace "-" "\\-"