From 47ec9619f90af3264b11ad26654610a043ed0d8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Sun, 20 Apr 2025 22:58:31 +0200 Subject: Conversions for variable expansion in ExprType class --- src/Script/Expr/Class.hs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/Script/Expr/Class.hs') diff --git a/src/Script/Expr/Class.hs b/src/Script/Expr/Class.hs index 64b4241..20a92b4 100644 --- a/src/Script/Expr/Class.hs +++ b/src/Script/Expr/Class.hs @@ -5,6 +5,7 @@ module Script.Expr.Class ( ExprEnumerator(..), ) where +import Data.Maybe import Data.Scientific import Data.Text (Text) import Data.Text qualified as T @@ -18,6 +19,12 @@ class Typeable a => ExprType a where recordMembers :: [(Text, RecordSelector a)] recordMembers = [] + exprExpansionConvTo :: ExprType b => Maybe (a -> b) + exprExpansionConvTo = Nothing + + exprExpansionConvFrom :: ExprType b => Maybe (b -> a) + exprExpansionConvFrom = Nothing + exprListUnpacker :: proxy a -> Maybe (ExprListUnpacker a) exprListUnpacker _ = Nothing @@ -36,12 +43,20 @@ instance ExprType Integer where textExprType _ = T.pack "integer" textExprValue x = T.pack (show x) + exprExpansionConvTo = listToMaybe $ catMaybes + [ cast (T.pack . show :: Integer -> Text) + ] + exprEnumerator _ = Just $ ExprEnumerator enumFromTo enumFromThenTo instance ExprType Scientific where textExprType _ = T.pack "number" textExprValue x = T.pack (show x) + exprExpansionConvTo = listToMaybe $ catMaybes + [ cast (T.pack . show :: Scientific -> Text) + ] + instance ExprType Bool where textExprType _ = T.pack "bool" textExprValue True = T.pack "true" -- cgit v1.2.3