-- | 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  "compScience"    (String -> NP
cn' "Computer Science")      (String -> Maybe String
forall a. a -> Maybe a
Just "CS")
-- | For ideas, concepts, or terms related to Software Engineering.
softEng :: IdeaDict
softEng      = String -> NP -> Maybe String -> IdeaDict
mkIdea  "softEng"        (String -> NP
cn' "Software Engineering")  (String -> Maybe String
forall a. a -> Maybe a
Just "SE")
-- | For ideas, concepts, or terms related to Mathematics.
mathematics :: IdeaDict
mathematics  = String -> NP -> Maybe String -> IdeaDict
mkIdea  "mathematics"    (String -> NP
cn' "Mathematics")           Maybe String
forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Programming Languages.
progLanguage :: IdeaDict
progLanguage = String -> NP -> Maybe String -> IdeaDict
mkIdea  "progLanguage"   (String -> NP
cn' "Programming Language")  Maybe String
forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Physics.
physics :: IdeaDict
physics      = String -> NP -> Maybe String -> IdeaDict
mkIdea  "physics"        (String -> NP
cn' "Physics")               Maybe String
forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Civil Engineering.
civilEng :: IdeaDict
civilEng     = String -> NP -> Maybe String -> IdeaDict
mkIdea  "civilEng"       (String -> NP
cn' "Civil Engineering")     Maybe String
forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Material Engineering.
materialEng :: IdeaDict
materialEng  = String -> NP -> Maybe String -> IdeaDict
mkIdea  "materialEng"    (String -> NP
cn' "Material Engineering")  Maybe String
forall a. Maybe a
Nothing
-- | For ideas, concepts, or terms related to Documents.
documentc :: IdeaDict
documentc    = String -> NP -> Maybe String -> IdeaDict
mkIdea  "documentc"      (String -> NP
cn' "Document")              (String -> Maybe String
forall a. a -> Maybe a
Just "Doc")
-- | For ideas, concepts, or terms related to Knowledge Management.
knowledgemng :: IdeaDict
knowledgemng = String -> NP -> Maybe String -> IdeaDict
mkIdea  "knowledgemng"   (String -> NP
cn' "Knowledge Management")  Maybe String
forall a. Maybe a
Nothing