module Plutarch.Pretty.Internal.Config (keywords, indentWidth, forcedPrefix) where

import Data.Set (Set)
import Data.Set qualified as Set
import Data.String (fromString)
import Data.Text (Text)

import Prettyprinter qualified as PP

import PlutusCore qualified as PLC

keywords :: Set Text
keywords :: Set Text
keywords =
  forall a. Ord a => [a] -> Set a
Set.fromList forall a b. (a -> b) -> a -> b
$
    [Text
"let", Text
"in"]
      forall a. Semigroup a => a -> a -> a
<> forall (f :: Type -> Type) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a. IsString a => String -> a
fromString forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Show a => a -> String
show forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a ann. Pretty a => a -> Doc ann
PP.pretty) [(forall a. Bounded a => a
minBound @PLC.DefaultFun) .. forall a. Bounded a => a
maxBound]

indentWidth :: Int
indentWidth :: Int
indentWidth = Int
2

-- | Prefix to use for naming forced builtin functions.
forcedPrefix :: Text
forcedPrefix :: Text
forcedPrefix = Text
"fr"