module Language.Drasil.Chunk.CodeBase where
import Database.Drasil (ChunkDB, symbResolve)
import Drasil.Code.CodeExpr.Development
import Language.Drasil
quantvar :: (Quantity c, MayHaveUnit c, Concept c) => c -> CodeVarChunk
quantvar :: forall c.
(Quantity c, MayHaveUnit c, Concept c) =>
c -> CodeVarChunk
quantvar c
c = CodeChunk -> Maybe CodeChunk -> CodeVarChunk
CodeVC (DefinedQuantityDict -> VarOrFunc -> CodeChunk
CodeC (c -> DefinedQuantityDict
forall c.
(Quantity c, Concept c, MayHaveUnit c) =>
c -> DefinedQuantityDict
dqdWr c
c) VarOrFunc
Var) Maybe CodeChunk
forall a. Maybe a
Nothing
quantfunc :: (Quantity c, MayHaveUnit c, Concept c) => c -> CodeFuncChunk
quantfunc :: forall c.
(Quantity c, MayHaveUnit c, Concept c) =>
c -> CodeFuncChunk
quantfunc c
c = CodeChunk -> CodeFuncChunk
CodeFC (CodeChunk -> CodeFuncChunk) -> CodeChunk -> CodeFuncChunk
forall a b. (a -> b) -> a -> b
$ DefinedQuantityDict -> VarOrFunc -> CodeChunk
CodeC (c -> DefinedQuantityDict
forall c.
(Quantity c, Concept c, MayHaveUnit c) =>
c -> DefinedQuantityDict
dqdWr c
c) VarOrFunc
Func
codevars :: CodeExpr -> ChunkDB -> [CodeVarChunk]
codevars :: CodeExpr -> ChunkDB -> [CodeVarChunk]
codevars CodeExpr
e ChunkDB
m = (UID -> CodeVarChunk) -> [UID] -> [CodeVarChunk]
forall a b. (a -> b) -> [a] -> [b]
map (ChunkDB -> UID -> CodeVarChunk
varResolve ChunkDB
m) ([UID] -> [CodeVarChunk]) -> [UID] -> [CodeVarChunk]
forall a b. (a -> b) -> a -> b
$ CodeExpr -> [UID]
eDep CodeExpr
e
codevars' :: CodeExpr -> ChunkDB -> [CodeVarChunk]
codevars' :: CodeExpr -> ChunkDB -> [CodeVarChunk]
codevars' CodeExpr
e ChunkDB
m = (UID -> CodeVarChunk) -> [UID] -> [CodeVarChunk]
forall a b. (a -> b) -> [a] -> [b]
map (ChunkDB -> UID -> CodeVarChunk
varResolve ChunkDB
m) ([UID] -> [CodeVarChunk]) -> [UID] -> [CodeVarChunk]
forall a b. (a -> b) -> a -> b
$ CodeExpr -> [UID]
eDep' CodeExpr
e
varResolve :: ChunkDB -> UID -> CodeVarChunk
varResolve :: ChunkDB -> UID -> CodeVarChunk
varResolve ChunkDB
m UID
x = DefinedQuantityDict -> CodeVarChunk
forall c.
(Quantity c, MayHaveUnit c, Concept c) =>
c -> CodeVarChunk
quantvar (DefinedQuantityDict -> CodeVarChunk)
-> DefinedQuantityDict -> CodeVarChunk
forall a b. (a -> b) -> a -> b
$ ChunkDB -> UID -> DefinedQuantityDict
symbResolve ChunkDB
m UID
x
funcResolve :: ChunkDB -> UID -> CodeFuncChunk
funcResolve :: ChunkDB -> UID -> CodeFuncChunk
funcResolve ChunkDB
m UID
x = DefinedQuantityDict -> CodeFuncChunk
forall c.
(Quantity c, MayHaveUnit c, Concept c) =>
c -> CodeFuncChunk
quantfunc (DefinedQuantityDict -> CodeFuncChunk)
-> DefinedQuantityDict -> CodeFuncChunk
forall a b. (a -> b) -> a -> b
$ ChunkDB -> UID -> DefinedQuantityDict
symbResolve ChunkDB
m UID
x