module Database.Drasil.ChunkDB (
cdb
) where
import Database.Drasil (ChunkDB (symbolTable, termTable, conceptChunkTable, _unitTable, _dataDefnTable,
_insmodelTable, _gendefTable, _theoryModelTable, _conceptinsTable,
_citationTable, _labelledcontentTable, _traceTable, _refbyTable, _refTable,
CDB), idMap, symbolMap, termMap, conceptMap, unitMap, addCdb)
import Language.Drasil (IdeaDict, Quantity, MayHaveUnit, Concept, IsUnit,
ConceptChunk, ConceptInstance, Citation, Reference, LabelledContent, nw, DefinedQuantityDict)
import Data.Drasil.Concepts.Documentation (doccon, doccon', srsDomains)
import Data.Drasil.Software.Products (prodtcon)
import Data.Drasil.Concepts.Education (educon)
import Data.Drasil.Concepts.Computation (compcon, algorithm)
import Data.Drasil.Concepts.Software (errMsg, program)
import Data.Drasil.Concepts.Math (mathcon)
import qualified Data.Map as Map (empty)
import Data.Drasil.SI_Units (siUnits)
import Theory.Drasil (DataDefinition, InstanceModel, TheoryModel, GenDefn)
import Language.Drasil.Code (codeDQDs)
basisSymbols :: [DefinedQuantityDict]
basisSymbols :: [DefinedQuantityDict]
basisSymbols =
[DefinedQuantityDict]
codeDQDs
basisIdeaDicts :: [IdeaDict]
basisIdeaDicts :: [IdeaDict]
basisIdeaDicts =
[IdeaDict]
doccon [IdeaDict] -> [IdeaDict] -> [IdeaDict]
forall a. [a] -> [a] -> [a]
++ [IdeaDict]
prodtcon [IdeaDict] -> [IdeaDict] -> [IdeaDict]
forall a. [a] -> [a] -> [a]
++ [IdeaDict]
educon [IdeaDict] -> [IdeaDict] -> [IdeaDict]
forall a. [a] -> [a] -> [a]
++ [IdeaDict]
compcon [IdeaDict] -> [IdeaDict] -> [IdeaDict]
forall a. [a] -> [a] -> [a]
++
(CI -> IdeaDict) -> [CI] -> [IdeaDict]
forall a b. (a -> b) -> [a] -> [b]
map CI -> IdeaDict
forall c. Idea c => c -> IdeaDict
nw [CI]
doccon'
basisConceptChunks :: [ConceptChunk]
basisConceptChunks :: [ConceptChunk]
basisConceptChunks =
[ConceptChunk
algorithm, ConceptChunk
errMsg, ConceptChunk
program] [ConceptChunk] -> [ConceptChunk] -> [ConceptChunk]
forall a. [a] -> [a] -> [a]
++ [ConceptChunk]
srsDomains [ConceptChunk] -> [ConceptChunk] -> [ConceptChunk]
forall a. [a] -> [a] -> [a]
++ [ConceptChunk]
mathcon
basisCDB :: ChunkDB
basisCDB :: ChunkDB
basisCDB =
CDB {
symbolTable :: SymbolMap
symbolTable = [DefinedQuantityDict] -> SymbolMap
forall c.
(Quantity c, MayHaveUnit c, Concept c) =>
[c] -> SymbolMap
symbolMap [DefinedQuantityDict]
basisSymbols,
termTable :: TermMap
termTable = [IdeaDict] -> TermMap
forall c. Idea c => [c] -> TermMap
termMap [IdeaDict]
basisIdeaDicts,
conceptChunkTable :: ConceptMap
conceptChunkTable = [ConceptChunk] -> ConceptMap
forall c. Concept c => [c] -> ConceptMap
conceptMap [ConceptChunk]
basisConceptChunks,
_unitTable :: UnitMap
_unitTable = [UnitDefn] -> UnitMap
forall u. IsUnit u => [u] -> UnitMap
unitMap [UnitDefn]
siUnits,
_dataDefnTable :: DatadefnMap
_dataDefnTable = DatadefnMap
forall k a. Map k a
Map.empty,
_insmodelTable :: InsModelMap
_insmodelTable = InsModelMap
forall k a. Map k a
Map.empty,
_gendefTable :: GendefMap
_gendefTable = GendefMap
forall k a. Map k a
Map.empty,
_theoryModelTable :: TheoryModelMap
_theoryModelTable = TheoryModelMap
forall k a. Map k a
Map.empty,
_conceptinsTable :: ConceptInstanceMap
_conceptinsTable = ConceptInstanceMap
forall k a. Map k a
Map.empty,
_citationTable :: CitationMap
_citationTable = CitationMap
forall k a. Map k a
Map.empty,
_labelledcontentTable :: LabelledContentMap
_labelledcontentTable = LabelledContentMap
forall k a. Map k a
Map.empty,
_traceTable :: TraceMap
_traceTable = TraceMap
forall k a. Map k a
Map.empty,
_refbyTable :: TraceMap
_refbyTable = TraceMap
forall k a. Map k a
Map.empty,
_refTable :: ReferenceMap
_refTable = ReferenceMap
forall k a. Map k a
Map.empty
}
cdb :: (Quantity q, MayHaveUnit q, Concept q, Concept c, IsUnit u) =>
[q] -> [IdeaDict] -> [c] -> [u] -> [DataDefinition] -> [InstanceModel] ->
[GenDefn] -> [TheoryModel] -> [ConceptInstance] ->
[LabelledContent] -> [Reference] -> [Citation] -> ChunkDB
cdb :: forall q c u.
(Quantity q, MayHaveUnit q, Concept q, Concept c, IsUnit u) =>
[q]
-> [IdeaDict]
-> [c]
-> [u]
-> [DataDefinition]
-> [InstanceModel]
-> [GenDefn]
-> [TheoryModel]
-> [ConceptInstance]
-> [LabelledContent]
-> [Reference]
-> [Citation]
-> ChunkDB
cdb [q]
s [IdeaDict]
t [c]
c [u]
u [DataDefinition]
d [InstanceModel]
ins [GenDefn]
gd [TheoryModel]
tm [ConceptInstance]
ci [LabelledContent]
lc [Reference]
r [Citation]
cits =
CDB {
symbolTable :: SymbolMap
symbolTable = [q] -> SymbolMap
forall c.
(Quantity c, MayHaveUnit c, Concept c) =>
[c] -> SymbolMap
symbolMap [q]
s,
termTable :: TermMap
termTable = [IdeaDict] -> TermMap
forall c. Idea c => [c] -> TermMap
termMap [IdeaDict]
t,
conceptChunkTable :: ConceptMap
conceptChunkTable = [c] -> ConceptMap
forall c. Concept c => [c] -> ConceptMap
conceptMap [c]
c,
_unitTable :: UnitMap
_unitTable = [u] -> UnitMap
forall u. IsUnit u => [u] -> UnitMap
unitMap [u]
u,
_dataDefnTable :: DatadefnMap
_dataDefnTable = String -> [DataDefinition] -> DatadefnMap
forall a. HasUID a => String -> [a] -> Map UID (a, Int)
idMap String
"DataDefnMap" [DataDefinition]
d,
_insmodelTable :: InsModelMap
_insmodelTable = String -> [InstanceModel] -> InsModelMap
forall a. HasUID a => String -> [a] -> Map UID (a, Int)
idMap String
"InsModelMap" [InstanceModel]
ins,
_gendefTable :: GendefMap
_gendefTable = String -> [GenDefn] -> GendefMap
forall a. HasUID a => String -> [a] -> Map UID (a, Int)
idMap String
"GenDefnmap" [GenDefn]
gd,
_theoryModelTable :: TheoryModelMap
_theoryModelTable = String -> [TheoryModel] -> TheoryModelMap
forall a. HasUID a => String -> [a] -> Map UID (a, Int)
idMap String
"TheoryModelMap" [TheoryModel]
tm,
_conceptinsTable :: ConceptInstanceMap
_conceptinsTable = String -> [ConceptInstance] -> ConceptInstanceMap
forall a. HasUID a => String -> [a] -> Map UID (a, Int)
idMap String
"ConcInsMap" [ConceptInstance]
ci,
_citationTable :: CitationMap
_citationTable = String -> [Citation] -> CitationMap
forall a. HasUID a => String -> [a] -> Map UID (a, Int)
idMap String
"CiteMap" [Citation]
cits,
_labelledcontentTable :: LabelledContentMap
_labelledcontentTable = String -> [LabelledContent] -> LabelledContentMap
forall a. HasUID a => String -> [a] -> Map UID (a, Int)
idMap String
"LLCMap" [LabelledContent]
lc,
_traceTable :: TraceMap
_traceTable = TraceMap
forall k a. Map k a
Map.empty,
_refbyTable :: TraceMap
_refbyTable = TraceMap
forall k a. Map k a
Map.empty,
_refTable :: ReferenceMap
_refTable = String -> [Reference] -> ReferenceMap
forall a. HasUID a => String -> [a] -> Map UID (a, Int)
idMap String
"RefMap" [Reference]
r
} ChunkDB -> ChunkDB -> ChunkDB
`addCdb` ChunkDB
basisCDB