From 57c27f313e9f28548aec19e58b1497b79d7d5335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 28 Sep 2025 20:38:18 +0200 Subject: Additional instances of ExprType used by parsed commands --- src/Script/Expr/Class.hs | 10 ++++++++++ src/Script/Shell.hs | 17 +++++++++++++++++ src/Script/Var.hs | 10 ++++++++++ 3 files changed, 37 insertions(+) (limited to 'src/Script') diff --git a/src/Script/Expr/Class.hs b/src/Script/Expr/Class.hs index 005b6a8..810b0c8 100644 --- a/src/Script/Expr/Class.hs +++ b/src/Script/Expr/Class.hs @@ -79,3 +79,13 @@ instance ExprType a => ExprType [a] where textExprValue x = "[" <> T.intercalate ", " (map textExprValue x) <> "]" exprListUnpacker _ = Just $ ExprListUnpacker id (const Proxy) + +instance ExprType a => ExprType (Maybe a) where + textExprType _ = textExprType @a Proxy <> "?" + textExprValue (Just x) = textExprValue x + textExprValue Nothing = "Nothing" + +instance (ExprType a, ExprType b) => ExprType (Either a b) where + textExprType _ = textExprType @a Proxy <> "|" <> textExprType @b Proxy + textExprValue (Left x) = "Left " <> textExprValue x + textExprValue (Right x) = "Right " <> textExprValue x diff --git a/src/Script/Shell.hs b/src/Script/Shell.hs index 23c3891..cc8d06f 100644 --- a/src/Script/Shell.hs +++ b/src/Script/Shell.hs @@ -33,6 +33,7 @@ import Network.Ip import Output import Process import Run.Monad +import Script.Expr.Class import Script.Var @@ -54,6 +55,22 @@ data ShellCommand = ShellCommand , cmdSourceLine :: SourceLine } +instance ExprType ShellScript where + textExprType _ = T.pack "ShellScript" + textExprValue _ = "" + +instance ExprType ShellStatement where + textExprType _ = T.pack "ShellStatement" + textExprValue _ = "" + +instance ExprType ShellPipeline where + textExprType _ = T.pack "ShellPipeline" + textExprValue _ = "" + +instance ExprType ShellCommand where + textExprType _ = T.pack "ShellCommand" + textExprValue _ = "" + data ShellExecInfo = ShellExecInfo { seiNode :: Node diff --git a/src/Script/Var.hs b/src/Script/Var.hs index 668060c..2c50101 100644 --- a/src/Script/Var.hs +++ b/src/Script/Var.hs @@ -9,6 +9,8 @@ module Script.Var ( import Data.Text (Text) import Data.Text qualified as T +import Script.Expr.Class + newtype VarName = VarName Text deriving (Eq, Ord) @@ -40,6 +42,10 @@ unqualifyName (LocalVarName name) = name newtype TypedVarName a = TypedVarName { fromTypedVarName :: VarName } deriving (Eq, Ord) +instance ExprType a => ExprType (TypedVarName a) where + textExprType _ = "TypedVarName" + textExprValue = textVarName . fromTypedVarName + newtype ModuleName = ModuleName [ Text ] deriving (Eq, Ord, Show) @@ -54,3 +60,7 @@ data SourceLine textSourceLine :: SourceLine -> Text textSourceLine (SourceLine text) = text textSourceLine SourceLineBuiltin = "" + +instance ExprType SourceLine where + textExprType _ = "SourceLine" + textExprValue = textSourceLine -- cgit v1.2.3