-- | Defines domains of knowledge for use in Drasil.
module Data.Drasil.Domains where

import Language.Drasil (IdeaDict, mkIdea, cn')

-- | Various domains that are used in Drasil. May have an abbreviation.
compScience, softEng, mathematics, progLanguage, physics, civilEng,
  materialEng, documentc, knowledgemng :: IdeaDict
-------------------------------------------------------------------------------
--  IdeaDict     |   |      id       |       term                    |  abbreviation
-------------------------------------------------------------------------------
-- | For ideas, concepts, or terms related to Computer Science.
compScience :: IdeaDict
compScience  = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"compScience"    (String -> NP
cn' String
"Computer Science")      (forall a. a -> Maybe a
Just String
"CS")
-- | For ideas, concepts, or terms related to Software Engineering.
softEng :: IdeaDict
softEng      = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"softEng"        (String -> NP
cn' String
"Software Engineering")  (forall a. a -> Maybe a
Just String
"SE")
-- | For ideas, concepts, or terms related to Mathematics.
mathematics :: IdeaDict
mathematics  = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"mathematics"    (String -> NP
cn' String
"Mathematics")           forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Programming Languages.
progLanguage :: IdeaDict
progLanguage = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"progLanguage"   (String -> NP
cn' String
"Programming Language")  forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Physics.
physics :: IdeaDict
physics      = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"physics"        (String -> NP
cn' String
"Physics")               forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Civil Engineering.
civilEng :: IdeaDict
civilEng     = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"civilEng"       (String -> NP
cn' String
"Civil Engineering")     forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Material Engineering.
materialEng :: IdeaDict
materialEng  = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"materialEng"    (String -> NP
cn' String
"Material Engineering")  forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Documents.
documentc :: IdeaDict
documentc    = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"documentc"      (String -> NP
cn' String
"Document")              (forall a. a -> Maybe a
Just String
"Doc")
-- | For ideas, concepts, or terms related to Knowledge Management.
knowledgemng :: IdeaDict
knowledgemng = String -> NP -> Maybe String -> IdeaDict
mkIdea  String
"knowledgemng"   (String -> NP
cn' String
"Knowledge Management")  forall a. Maybe a
Nothing