{-# LANGUAGE PostfixOperators #-}
-- | Introduce the Drasil website.
module Drasil.Website.Introduction where

import Language.Drasil


-- * Introduction Section

-- | Creates the introduction section.
introSec :: Reference -> Reference -> Reference -> Reference -> Reference -> Section
introSec :: Reference
-> Reference -> Reference -> Reference -> Reference -> Section
introSec csRef :: Reference
csRef docRef :: Reference
docRef analysisSecRef :: Reference
analysisSecRef repoRef :: Reference
repoRef wikiRef :: Reference
wikiRef = 
  Sentence -> [Contents] -> [Section] -> Reference -> Section
section (String -> Sentence
S "Introduction") -- Title
  ((Sentence -> Contents) -> [Sentence] -> [Contents]
forall a b. (a -> b) -> [a] -> [b]
map Sentence -> Contents
mkParagraph [Reference -> Reference -> Sentence
introParagraph1 Reference
repoRef Reference
wikiRef, Reference -> Reference -> Reference -> Sentence
introParagraph2 Reference
csRef Reference
docRef Reference
analysisSecRef]) -- Contents
  [] (Reference -> Section) -> Reference -> Section
forall a b. (a -> b) -> a -> b
$ String -> Sentence -> Reference
makeSecRef "Introduction" (Sentence -> Reference) -> Sentence -> Reference
forall a b. (a -> b) -> a -> b
$ String -> Sentence
S "Introduction" -- Section reference

-- | Paragraph to introduce Drasil and its goals.
introParagraph1 :: Reference -> Reference -> Sentence
introParagraph1 :: Reference -> Reference -> Sentence
introParagraph1 repoRef :: Reference
repoRef wikiRef :: Reference
wikiRef = String -> Sentence
S "Drasil is a framework for generating all of the software artifacts from a stable knowledge base, \
  \focusing currently on scientific software. The main goals are to reduce knowledge duplication and \
  \improve traceability. The artifacts are generated from a common knowledge-base using recipes \
  \written in a Domain-Specific Language (DSL). These recipes allow us to specify which pieces of \
  \knowledge should be used in which artifacts, how to transform them, and more. For more information on the design, documentation, \
  \useage, and specifics of Drasil, please visit the" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
repoRef (String -> Sentence
S "GitHub repository") Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S "or the" Sentence -> Sentence -> Sentence
+:+ (Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
wikiRef (String -> Sentence
S "GitHub Wiki") Sentence -> Sentence
!.)

-- | Paragraph to describe the layout of the Drasil website.
introParagraph2 :: Reference -> Reference -> Reference -> Sentence
introParagraph2 :: Reference -> Reference -> Reference -> Sentence
introParagraph2 caseStudySecRef :: Reference
caseStudySecRef docsRef :: Reference
docsRef analysisSecRef :: Reference
analysisSecRef = String -> Sentence
S "This webpage is designed to contain the most up to date" Sentence -> Sentence -> Sentence
+:+
  SepType -> FoldType -> [Sentence] -> Sentence
foldlList SepType
Comma FoldType
List ((Reference -> String -> Sentence)
-> [Reference] -> [String] -> [Sentence]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith (\x :: Reference
x y :: String
y -> Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
x (String -> Sentence
S String
y)) [Reference
caseStudySecRef, Reference
docsRef, Reference
analysisSecRef] ["case study artifacts", "Haddock documentation", "Drasil analysis"])
  Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S "from the Drasil repository. \
  \The case study artifacts include the Software Requirements Specification (SRS) for each case study, \
  \which specifies what the program sets out to achieve. \
  \The Haddock Documentation section contains the current documentation for the Drasil framework. \
  \The package dependency graphs shows the hierarchy of modules within each package."
  -- \The footer of this page contains the continuous integration build of the project, \
  -- \as well as the commit number that the build and artifacts are based off of.