-- | Defines citations used in Drasil.
module Data.Drasil.Citations where

import Language.Drasil --(S,(:+:),(+:+),sC,phrase,F,Accent(..),Citation(..),CiteField(..))
import Data.Drasil.People (dParnas, jRalyte, lLai, nKoothoor, nKraiem,
  pcClements, pjAgerfalk, spencerSmith, mCampidelli, dmWiess, rodPierce,
  wikiAuthors, rcHibbeler, rKhedri, sRobertson, jRobertson)

-- * Citations

-- ** Papers

campidelli, koothoor2013, parnas1972, parnasClements1984,
  parnasClements1986, rbrtsn2012, smithLai2005, lineSource, pointSource,
  smithEtAl2007, smithKoothoor2016, hibbeler2004 :: Citation

campidelli :: Citation
campidelli = String -> [CiteField] -> String -> Citation
cBooklet
  String
"Glass-BR Software for the design and risk assessment of glass facades subjected to blast loading"
  [People -> CiteField
author [Person
mCampidelli]] String
"campidelli"

koothoor2013 :: Citation
koothoor2013 = 
  People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cMThesis [Person
nKoothoor] 
  String
"A Document Driven Approach to Certifying Scientific Computing Software"
  String
"McMaster University" Int
2013 [String -> CiteField
address String
"Hamilton, ON, Canada"]
  String
"koothoor2013"

parnas1972 :: Citation
parnas1972 = People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cArticle [Person
dParnas]
  String
"On the Criteria To Be Used in Decomposing Systems into Modules"
  String
"Communications of the ACM" Int
1972
  [[Int] -> CiteField
pages [Int
1053..Int
1058]] String
"dParnas1972"
  
parnasClements1984 :: Citation
parnasClements1984 = People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cInProceedings
  [Person
dParnas, Person
pcClements, Person
dmWiess]
  String
"The Modular Structure of Complex Systems"
  String
"ICSE '84: Proceedings of the 7th international conference on Software engineering"
  Int
1984 [[Int] -> CiteField
pages [Int
408..Int
417]] String
"parnasClements1984"

parnasClements1986 :: Citation
parnasClements1986 = People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cArticle [Person
dParnas, Person
pcClements] 
  String
"A rational design process: How and why to fake it"
  String
"IEEE Transactions on Software Engineering" Int
1986
  [Month -> CiteField
month Month
Feb, Int -> CiteField
volume Int
12, Int -> CiteField
number Int
2, [Int] -> CiteField
pages [Int
251..Int
257], String -> CiteField
address String
"Washington, USA"]
  String
"parnasClements1986"

rbrtsn2012 :: Citation
rbrtsn2012 = [CiteField] -> String -> Citation
cMisc [People -> CiteField
author [Person
jRobertson, Person
sRobertson], String -> CiteField
title
  String
"Volere requirements specification template edition 16",
  String -> CiteField
howPublishedU String
"https://pdfs.semanticscholar.org/cf57/27a59801086cbd3d14e587e09880561dbe22.pdf"
  , Int -> CiteField
year Int
2012]
  String
"rbrtsn2012"

smithLai2005 :: Citation
smithLai2005 = People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cInProceedings [Person
spencerSmith, Person
lLai]
  String
"A new requirements template for scientific computing"
  (String
"Proceedings of the First International Workshop on " forall a. [a] -> [a] -> [a]
++
  String
"Situational Requirements Engineering Processes - Methods, " forall a. [a] -> [a] -> [a]
++
  String
"Techniques and Tools to Support Situation-Specific Requirements " forall a. [a] -> [a] -> [a]
++
  String
"Engineering Processes, SREP'05") Int
2005
  [ People -> CiteField
editor [Person
pjAgerfalk, Person
nKraiem, Person
jRalyte], String -> CiteField
address String
"Paris, France"
  , [Int] -> CiteField
pages [Int
107..Int
121], 
  String -> CiteField
note String
"In conjunction with 13th IEEE International Requirements Engineering Conference,"] 
  String
"smithLai2005"

smithEtAl2007 :: Citation
smithEtAl2007 = People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cArticle [Person
spencerSmith, Person
lLai, Person
rKhedri]
  (String
"Requirements Analysis for Engineering Computation: A Systematic Approach for" forall a. [a] -> [a] -> [a]
++ 
    String
" Improving Software Reliability")
  String
"Reliable Computing, Special Issue on Reliable Engineering Computation" Int
2007
  [Month -> CiteField
month Month
Feb, Int -> CiteField
volume Int
13, Int -> CiteField
number Int
1, [Int] -> CiteField
pages [Int
83..Int
107], String -> CiteField
howPublishedU String
"https://doi.org/10.1007/s11155-006-9020-7"]
  String
"smithEtAl2007"

smithKoothoor2016 :: Citation
smithKoothoor2016 = People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cArticle [Person
spencerSmith, Person
nKoothoor]
  (String
"A Document-Driven Method for Certifying Scientific Computing Software for Use" forall a. [a] -> [a] -> [a]
++ 
    String
" in Nuclear Safety Analysis")
  String
" Nuclear Engineering and Technology" Int
2016
  [Month -> CiteField
month Month
Apr, Int -> CiteField
volume Int
48, Int -> CiteField
number Int
2, [Int] -> CiteField
pages[Int
404..Int
418], 
    String -> CiteField
howPublishedU String
"http://www.sciencedirect.com/science/article/pii/S1738573315002582"]
  String
"smithKoothoor2016"

lineSource :: Citation
lineSource = [CiteField] -> String -> Citation
cMisc
  [People -> CiteField
author [String -> Person
mononym String
"The Editors of Encyclopaedia Britannica"], String -> CiteField
title String
"Line",
  String -> CiteField
howPublishedU String
"https://www.britannica.com/science/line-mathematics",
  Month -> CiteField
month Month
Jun, Int -> CiteField
year Int
2019]
  String
"lineSource"

pointSource :: Citation
pointSource = [CiteField] -> String -> Citation
cMisc
  [People -> CiteField
author [Person
rodPierce], String -> CiteField
title String
"Point",
  String -> CiteField
howPublishedU String
"https://www.mathsisfun.com/geometry/point.html",
  Month -> CiteField
month Month
May, Int -> CiteField
year Int
2017]
  String
"pointSource"

hibbeler2004 :: Citation
hibbeler2004 = People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cBookA [Person
rcHibbeler]
  String
"Engineering Mechanics: Dynamics"
  String
"Pearson Prentice Hall"
  Int
2004 [] String
"hibbeler2004"

-- ** Wikipedia

dampingSource, accelerationWiki, velocityWiki, cartesianWiki, laplaceWiki, pidWiki :: Citation

dampingSource :: Citation
dampingSource = [CiteField] -> String -> Citation
cMisc
  [People -> CiteField
author [Person
wikiAuthors], String -> CiteField
title String
"Damping",
  String -> CiteField
howPublishedU String
"https://en.wikipedia.org/wiki/Damping_ratio",
  Month -> CiteField
month Month
Jul, Int -> CiteField
year Int
2019]
  String
"dampingSource"

accelerationWiki :: Citation
accelerationWiki = [CiteField] -> String -> Citation
cMisc [People -> CiteField
author [Person
wikiAuthors],
  String -> CiteField
title String
"Acceleration", String -> CiteField
howPublishedU String
"https://en.wikipedia.org/wiki/Acceleration",
  Month -> CiteField
month Month
Jun, Int -> CiteField
year Int
2019]
  String
"accelerationWiki"

velocityWiki :: Citation
velocityWiki = [CiteField] -> String -> Citation
cMisc [People -> CiteField
author [Person
wikiAuthors],
  String -> CiteField
title String
"Velocity", String -> CiteField
howPublishedU String
"https://en.wikipedia.org/wiki/Velocity",
  Month -> CiteField
month Month
Jun, Int -> CiteField
year Int
2019]
  String
"velocityWiki"

cartesianWiki :: Citation
cartesianWiki = [CiteField] -> String -> Citation
cMisc
  [People -> CiteField
author [Person
wikiAuthors], String -> CiteField
title String
"Cartesian coordinate system",
  String -> CiteField
howPublishedU String
"https://en.wikipedia.org/wiki/Cartesian_coordinate_system",
  Month -> CiteField
month Month
Jun, Int -> CiteField
year Int
2019]
  String
"cartesianWiki"

laplaceWiki :: Citation
laplaceWiki
  = [CiteField] -> String -> Citation
cMisc
      [People -> CiteField
author [Person
wikiAuthors], String -> CiteField
title String
"Laplace transform",
       String -> CiteField
howPublishedU String
"https://en.wikipedia.org/wiki/Laplace_transform",
       Month -> CiteField
month Month
Nov, Int -> CiteField
year Int
2020]
      String
"laplaceWiki"

pidWiki :: Citation
pidWiki
  = [CiteField] -> String -> Citation
cMisc
      [People -> CiteField
author [Person
wikiAuthors], String -> CiteField
title String
"PID controller",
       String -> CiteField
howPublishedU String
"https://en.wikipedia.org/wiki/PID_controller", Month -> CiteField
month Month
Oct,
       Int -> CiteField
year Int
2020]
      String
"pidWiki"

-- * Common Cite Fields

jnlCGJ :: String
jnlCGJ :: String
jnlCGJ = String
"Canadian Geotechnical Journal"