{-# LANGUAGE PatternSynonyms #-}
module Unison.Codebase.Transcript
( ExpectingError,
ScratchFileName,
Hidden (..),
UcmLine (..),
UcmContext (..),
APIRequest (..),
pattern CMarkCodeBlock,
Stanza,
ProcessedBlock (..),
)
where
import CMark qualified
import Unison.Core.Project (ProjectBranchName, ProjectName)
import Unison.Prelude
import Unison.Project (ProjectAndBranch)
type ExpectingError = Bool
type ScratchFileName = Text
data Hidden = Shown | HideOutput | HideAll
deriving (Hidden -> Hidden -> Bool
(Hidden -> Hidden -> Bool)
-> (Hidden -> Hidden -> Bool) -> Eq Hidden
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Hidden -> Hidden -> Bool
== :: Hidden -> Hidden -> Bool
$c/= :: Hidden -> Hidden -> Bool
/= :: Hidden -> Hidden -> Bool
Eq, Int -> Hidden -> ShowS
[Hidden] -> ShowS
Hidden -> String
(Int -> Hidden -> ShowS)
-> (Hidden -> String) -> ([Hidden] -> ShowS) -> Show Hidden
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Hidden -> ShowS
showsPrec :: Int -> Hidden -> ShowS
$cshow :: Hidden -> String
show :: Hidden -> String
$cshowList :: [Hidden] -> ShowS
showList :: [Hidden] -> ShowS
Show)
data UcmLine
= UcmCommand UcmContext Text
|
Text
data UcmContext
= UcmContextProject (ProjectAndBranch ProjectName ProjectBranchName)
data APIRequest
= GetRequest Text
| Text
pattern CMarkCodeBlock :: (Maybe CMark.PosInfo) -> Text -> Text -> CMark.Node
pattern $mCMarkCodeBlock :: forall {r}.
Node -> (Maybe PosInfo -> Text -> Text -> r) -> ((# #) -> r) -> r
$bCMarkCodeBlock :: Maybe PosInfo -> Text -> Text -> Node
CMarkCodeBlock pos info body = CMark.Node pos (CMark.CODE_BLOCK info body) []
type Stanza = Either CMark.Node ProcessedBlock
data ProcessedBlock
= Ucm Hidden ExpectingError [UcmLine]
| Unison Hidden ExpectingError (Maybe ScratchFileName) Text
| API [APIRequest]