{-# LANGUAGE PostfixOperators #-}
module Drasil.Website.About where
import Language.Drasil
wikiSentence :: Sentence
wikiSentence :: Sentence
wikiSentence = String -> Sentence
S String
"wiki page"
aboutSec :: Reference -> Reference -> Reference -> Reference -> Reference -> Reference -> Reference -> Reference ->
Reference -> Reference -> Reference -> Reference -> Reference -> Section
aboutSec :: Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Reference
-> Section
aboutSec Reference
csRef Reference
docRef Reference
analysisSecRef Reference
repoRef Reference
wikiRef Reference
infoEncodingWiki Reference
chunksWiki Reference
recipesWiki Reference
paperGOOL Reference
papersWiki
Reference
icsePositionPaper Reference
danPoster Reference
wellUnderstoodPaper =
Sentence -> [Contents] -> [Section] -> Reference -> Section
section (String -> Sentence
S String
"About")
((Sentence -> Contents) -> [Sentence] -> [Contents]
forall a b. (a -> b) -> [a] -> [b]
map Sentence -> Contents
mkParagraph [Reference -> Reference -> Sentence
aboutParagraph1 Reference
repoRef Reference
wikiRef, Reference -> Reference -> Reference -> Sentence
aboutParagraph2 Reference
csRef Reference
docRef Reference
analysisSecRef, Sentence
aboutParagraph3]
[Contents] -> [Contents] -> [Contents]
forall a. [a] -> [a] -> [a]
++ [Contents
currentlyGeneratedArtifacts] [Contents] -> [Contents] -> [Contents]
forall a. [a] -> [a] -> [a]
++ [Sentence -> Contents
mkParagraph Sentence
aboutParagraph4] [Contents] -> [Contents] -> [Contents]
forall a. [a] -> [a] -> [a]
++ [Contents
futureGeneratedArtifacts] [Contents] -> [Contents] -> [Contents]
forall a. [a] -> [a] -> [a]
++ (Sentence -> Contents) -> [Sentence] -> [Contents]
forall a b. (a -> b) -> [a] -> [b]
map Sentence -> Contents
mkParagraph
[Reference -> Sentence
aboutParagraph5 Reference
infoEncodingWiki, Reference -> Sentence
aboutParagraph6 Reference
chunksWiki, Reference -> Sentence
aboutParagraph7 Reference
recipesWiki, Reference -> Sentence
aboutParagraph8 Reference
paperGOOL,
Reference -> Reference -> Reference -> Reference -> Sentence
aboutParagraph9 Reference
papersWiki Reference
icsePositionPaper Reference
danPoster Reference
wellUnderstoodPaper])
[] (Reference -> Section) -> Reference -> Section
forall a b. (a -> b) -> a -> b
$ String -> Sentence -> Reference
makeSecRef String
"About" (Sentence -> Reference) -> Sentence -> Reference
forall a b. (a -> b) -> a -> b
$ String -> Sentence
S String
"About"
aboutParagraph1 :: Reference -> Reference -> Sentence
aboutParagraph1 :: Reference -> Reference -> Sentence
aboutParagraph1 Reference
repoRef Reference
wikiRef = String -> Sentence
S String
"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, \
\usage, 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 String
"GitHub repository") Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"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 String
"GitHub Wiki") !.)
aboutParagraph2 :: Reference -> Reference -> Reference -> Sentence
aboutParagraph2 :: Reference -> Reference -> Reference -> Sentence
aboutParagraph2 Reference
caseStudySecRef Reference
docsRef Reference
analysisSecRef = String -> Sentence
S String
"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 (\Reference
x 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] [String
"case study artifacts",
String
"Haddock documentation", String
"Drasil analysis"]) Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"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 show the hierarchy of modules within each package."
aboutParagraph3 :: Sentence
aboutParagraph3 :: Sentence
aboutParagraph3 = String -> Sentence
S String
"The following is a list of artifacts that Drasil currently generates:"
currentlyGeneratedArtifacts :: Contents
currentlyGeneratedArtifacts :: Contents
currentlyGeneratedArtifacts = [Sentence] -> Contents
enumBulletU ([Sentence] -> Contents) -> [Sentence] -> Contents
forall a b. (a -> b) -> a -> b
$ ([Sentence] -> Sentence) -> [[Sentence]] -> [Sentence]
forall a b. (a -> b) -> [a] -> [b]
map [Sentence] -> Sentence
foldlSent_
[[String -> Sentence
S String
"SRS"],
[String -> Sentence
S String
"code"],
[String -> Sentence
S String
"README"],
[String -> Sentence
S String
"Makefile"]]
aboutParagraph4 :: Sentence
aboutParagraph4 :: Sentence
aboutParagraph4 = String -> Sentence
S String
"We hope to generate the following artifacts in the future:"
futureGeneratedArtifacts :: Contents
futureGeneratedArtifacts :: Contents
futureGeneratedArtifacts = [Sentence] -> Contents
enumBulletU ([Sentence] -> Contents) -> [Sentence] -> Contents
forall a b. (a -> b) -> a -> b
$ ([Sentence] -> Sentence) -> [[Sentence]] -> [Sentence]
forall a b. (a -> b) -> [a] -> [b]
map [Sentence] -> Sentence
foldlSent_
[[String -> Sentence
S String
"License"],
[String -> Sentence
S String
"Installation Instructions"],
[String -> Sentence
S String
"Dependency List"],
[String -> Sentence
S String
"Authors"],
[String -> Sentence
S String
"Getting Started / User Manual"],
[String -> Sentence
S String
"Release Info"],
[String -> Sentence
S String
"Design Documentation"],
[String -> Sentence
S String
"Build Scripts"],
[String -> Sentence
S String
"Test Cases"]]
aboutParagraph5 :: Reference -> Sentence
aboutParagraph5 :: Reference -> Sentence
aboutParagraph5 Reference
infoEncodingWiki = String -> Sentence
S String
"As described in the" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
infoEncodingWiki (String -> Sentence
S String
"Information Encoding") Sentence -> Sentence -> Sentence
+:+
Sentence -> Sentence -> Sentence
sC Sentence
wikiSentence (String -> Sentence
S String
"Drasil uses specific terminology") Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"to address types of \
\knowledge for the purpose of encoding information, since we know that we want to eventually generate words, sentences, paragraphs, \
\whole documents with headings, references, formulas, tables, graphs, and code. This is done by trying to understand the basic 'units' \
\of all artifacts, and methods for composing larger structures from these units. The removal of duplicate units is an important feature \
\of this methodology. The basic building blocks of the methodology include different expressions for units with a specific meaning. \
\These are built into ontologies of domains that address broader knowledge. Chunks form a fundamental part of such ontologies."
aboutParagraph6 :: Reference -> Sentence
aboutParagraph6 :: Reference -> Sentence
aboutParagraph6 Reference
chunksWiki = String -> Sentence
S String
"As described in the" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
chunksWiki (String -> Sentence
S String
"Chunks") Sentence -> Sentence -> Sentence
+:+
Sentence -> Sentence -> Sentence
sC Sentence
wikiSentence (String -> Sentence
S String
"a chunk is a data type specialized") Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"in holding a specific type of information for \
\a specific purpose so that knowledge may be used in generated models, definitions, and theories. Chunks are usually made up of several \
\lower-level types that hold lower-lever information; when contained together, these pieces of lower-level information hold a new specific \
\purpose. The structure of a chunk can be thought of as a wrapper of information, and this is all implemented using Haskell's record-type \
\syntax. Recipes transform the acquired knowledge into a usable format."
aboutParagraph7 :: Reference -> Sentence
aboutParagraph7 :: Reference -> Sentence
aboutParagraph7 Reference
recipesWiki = String -> Sentence
S String
"As described in the" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
recipesWiki (String -> Sentence
S String
"Recipes") Sentence -> Sentence -> Sentence
+:+
Sentence -> Sentence -> Sentence
sC Sentence
wikiSentence (String -> Sentence
S String
"recipes are instructions that") Sentence -> Sentence -> Sentence
+:+
String -> Sentence
S String
"unpackage necessary information from chunks and send \
\that information to Drasil generators/printers to build complete artifacts. When an artifact needs to be changed, the recipe is modified to \
\unpackage the additional necessary information from a chunk, or alternatively to omit unpackaging information that is no longer required."
aboutParagraph8 :: Reference -> Sentence
aboutParagraph8 :: Reference -> Sentence
aboutParagraph8 Reference
paperGOOL = String -> Sentence
S String
"As described in the" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
paperGOOL (String -> Sentence
S String
"GOOL") Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"paper, this is a Generic Object-Oriented Language \
\that provides intermediary assistance in code \
\generation, allowing Drasil to more efficiently generate code in several languages, including Python, Java, C-Sharp, and C++."
aboutParagraph9 :: Reference -> Reference -> Reference -> Reference -> Sentence
aboutParagraph9 :: Reference -> Reference -> Reference -> Reference -> Sentence
aboutParagraph9 Reference
papersWiki Reference
icsePositionPaper Reference
danPoster Reference
wellUnderstoodPaper =
String -> Sentence
S String
"A list of papers and documents written about Drasil can be found on the" Sentence -> Sentence -> Sentence
+:+
Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
papersWiki (String -> Sentence
S String
"Drasil Papers and Documents") Sentence -> Sentence -> Sentence
+:+. Sentence
wikiSentence Sentence -> Sentence -> Sentence
+:+
String -> Sentence
S String
"In particular" Sentence -> Sentence -> Sentence
`sC` String -> Sentence
S String
"there is" Sentence -> Sentence -> Sentence
+:+. SepType -> FoldType -> [Sentence] -> Sentence
foldlList SepType
Comma FoldType
List [
String -> Sentence
S String
"an" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
icsePositionPaper (String -> Sentence
S String
"Old Position paper") Sentence -> Sentence -> Sentence
+:+
String -> Sentence
S String
"outlining our original ideas",
String -> Sentence
S String
"a" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
danPoster (String -> Sentence
S String
"Drasil poster"),
String -> Sentence
S String
"a" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
wellUnderstoodPaper (String -> Sentence
S String
"Well-Understood paper") Sentence -> Sentence -> Sentence
+:+
String -> Sentence
S String
"discussing key concepts"
]