-- | 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)

-- * Citations

-- ** Papers

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

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

koothoor2013 :: Citation
koothoor2013 = 
  People
-> String -> String -> Int -> [CiteField] -> String -> Citation
cMThesis [Person
nKoothoor] 
  "A document drive approach to certifying scientific computing software"
  "McMaster University" 2013 [String -> CiteField
address "Hamilton, ON, Canada"]
  "koothoor2013"

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

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

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

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

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

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

-- ** Wikipedia

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

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

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

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

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

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

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

-- * Common Cite Fields

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