Skip to content

Commit

Permalink
more renaming
Browse files Browse the repository at this point in the history
  • Loading branch information
jamessanders committed Feb 19, 2011
1 parent 3d8f361 commit 424a31c
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 36 deletions.
12 changes: 6 additions & 6 deletions src/Text/Twine/Eval.hs
Expand Up @@ -21,7 +21,7 @@ type Stack m a = StateT (ContextState m) (WriterT [String] m) a

-- simpleContext

foldCX :: (Monad m) => [ContextItem m] -> ContextItem m
foldCX :: (Monad m) => [TwineElement m] -> TwineElement m
foldCX = foldl (<+>) emptyContext

-- Context Writer Monad --
Expand All @@ -41,17 +41,17 @@ lift2 f = lift $ lift $ f
debug _ fn = fn
--debug = trace

runEval :: (Monad m, Functor m) => Template -> ContextItem m -> m ByteString
runEval :: (Monad m, Functor m) => Template -> TwineElement m -> m ByteString
runEval tm cx = do
((r,log),_) <- runStack (eval' tm) (ContextState cx M.empty)
debug (show r) $ do
return $ C.concat r

getCX :: (Monad m) => Stack m (ContextItem m)
getCX :: (Monad m) => Stack m (TwineElement m)
getCX = do s <- get
return (getContextState s)

putCX :: (Monad m) => ContextItem m -> Stack m ()
putCX :: (Monad m) => TwineElement m -> Stack m ()
putCX cx = do s <- get
put $ s { getContextState = cx }

Expand Down Expand Up @@ -110,7 +110,7 @@ fromMaybeToContext (Just a) = a
fromMaybeToContext Nothing = ContextNull


evalExpr :: (Monad m, Functor m) => Expr -> Stack m (ContextItem m)
evalExpr :: (Monad m, Functor m) => Expr -> Stack m (TwineElement m)
evalExpr (Func n a) = do
cx <- getCX
ll <- lift2 $ doLookup n cx
Expand All @@ -134,7 +134,7 @@ evalExpr acc@(Accessor n expr) = do
g <- getCX
accessObjectInContext g acc

accessObjectInContext :: (Monad m, Functor m) => ContextItem m -> Expr -> Stack m (ContextItem m)
accessObjectInContext :: (Monad m, Functor m) => TwineElement m -> Expr -> Stack m (TwineElement m)
accessObjectInContext context (Accessor (Var n) expr) = do
cx <- lift2 $ doLookup' n context
case cx of
Expand Down
2 changes: 1 addition & 1 deletion src/Text/Twine/Eval/Builtins.hs
Expand Up @@ -11,5 +11,5 @@ import qualified Data.Map as M

myNot [ContextBool b] = return . bind $ not b

builtins :: (Monad m) => M.Map C.ByteString (ContextItem m)
builtins :: (Monad m) => M.Map C.ByteString (TwineElement m)
builtins = M.fromList [("not", ContextFunction myNot)]
16 changes: 8 additions & 8 deletions src/Text/Twine/Eval/Context.hs
Expand Up @@ -20,10 +20,10 @@ import Control.Monad.Writer
import qualified Data.Map as M

class (Monad m) => ContextBinding m a | a -> m where
binding :: ByteString -> a -> m (ContextItem m)
makeIterable :: a -> m [ContextItem m]
binding :: ByteString -> a -> m (TwineElement m)
makeIterable :: a -> m [TwineElement m]
makeString :: a -> m String
bind :: (ContextBinding m a) => a -> ContextItem m
bind :: (ContextBinding m a) => a -> TwineElement m

binding _ _ = return ContextNull
makeIterable _ = return []
Expand All @@ -35,11 +35,11 @@ class (Monad m) => ContextBinding m a | a -> m where
}


instance (Monad m) => ContextBinding m (ContextItem m) where
instance (Monad m) => ContextBinding m (TwineElement m) where
bind = id
makeString = return . show

instance (Monad m) => ContextBinding m ([ContextItem m] -> m (ContextItem m)) where
instance (Monad m) => ContextBinding m ([TwineElement m] -> m (TwineElement m)) where
bind = ContextFunction

instance (Monad m) => ContextBinding m EmptyContext
Expand All @@ -48,7 +48,7 @@ instance (Monad m, ContextBinding m a) => ContextBinding m (Maybe a) where
bind (Just a) = bind a
bind Nothing = ContextNull

instance (Monad m) => ContextBinding m [(ByteString,ContextItem m)] where
instance (Monad m) => ContextBinding m [(ByteString,TwineElement m)] where
binding k = return . fromMaybe ContextNull . lookup k

instance (Monad m) => ContextBinding m String where
Expand All @@ -60,9 +60,9 @@ instance (Monad m) => ContextBinding m ByteString where
instance (Monad m) => ContextBinding m Bool where
bind = ContextBool

instance (Monad m) => ContextBinding m (M.Map ByteString (ContextItem m)) where
instance (Monad m) => ContextBinding m (M.Map ByteString (TwineElement m)) where
binding k = return . fromMaybe (ContextNull) . M.lookup k

emptyContext :: (Monad m) => ContextItem m
emptyContext :: (Monad m) => TwineElement m
emptyContext = bind EmptyContext

4 changes: 2 additions & 2 deletions src/Text/Twine/Eval/ContextWriter.hs
Expand Up @@ -22,10 +22,10 @@ import Control.Monad.Writer
import Data.Map (Map)
import qualified Data.Map as M

type ContextMapper m = Map ByteString (ContextItem m)
type ContextMapper m = Map ByteString (TwineElement m)
type ContextWriter m = WriterT (ContextMapper m) m ()

makeContext :: (Monad m) => ContextWriter m -> m (ContextItem m)
makeContext :: (Monad m) => ContextWriter m -> m (TwineElement m)
makeContext cw = do
mp <- execWriterT cw
return $ bind (mp `M.union` builtins)
Expand Down
35 changes: 16 additions & 19 deletions src/Text/Twine/Eval/Types.hs
Expand Up @@ -18,30 +18,30 @@ import Control.Monad.Identity
import Control.Monad.Trans
import qualified Data.Map as M

data ContextItem m = ContextPairs [Context m]
| ContextMap (Context m)
| ContextValue ByteString
| ContextInteger Integer
| ContextBool Bool
| ContextNull
| ContextList [ContextItem m]
| ContextFunction ([ContextItem m] -> m (ContextItem m))

newtype CXListLike m = CXListLike { unCXListLike :: [ContextItem m] }
data TwineElement m = ContextPairs [Context m]
| ContextMap (Context m)
| ContextValue ByteString
| ContextInteger Integer
| ContextBool Bool
| ContextNull
| ContextList [TwineElement m]
| ContextFunction ([TwineElement m] -> m (TwineElement m))

newtype CXListLike m = CXListLike { unCXListLike :: [TwineElement m] }
newtype CXInteger = CXInteger { unCXInteger :: Integer }

type BuiltinFunc m = [ContextItem m] -> m (ContextItem m)
type BuiltinFunc m = [TwineElement m] -> m (TwineElement m)

data ContextState m = ContextState { getContextState :: (ContextItem m)
data ContextState m = ContextState { getContextState :: (TwineElement m)
, getContextFuns :: M.Map C.ByteString (BuiltinFunc m) }


instance (Monad m) => Eq (ContextItem m) where
instance (Monad m) => Eq (TwineElement m) where
(ContextValue x) == (ContextValue y) = x == y
(ContextList x) == (ContextList y) = x == y
_ == _ = error "Unable to determine equality."

instance (Monad m) => Show (ContextItem m) where
instance (Monad m) => Show (TwineElement m) where
show (ContextValue x) = C.unpack x
show (ContextPairs _) = "((ContextMap))"
show (ContextMap _) = "((ContextMap))"
Expand All @@ -53,12 +53,9 @@ instance (Monad m) => Show (ContextItem m) where
data EmptyContext = EmptyContext

data Context m = Context {
getContext :: ByteString -> m (ContextItem m),
getIterable :: m [ContextItem m],
getContext :: ByteString -> m (TwineElement m),
getIterable :: m [TwineElement m],
getString :: m String
}

------------------------------------------------------------------------

------------------------------------------------------------------------

0 comments on commit 424a31c

Please sign in to comment.