-- | Defines citations used in Drasil.
module Data.Drasil.Citations (
    module Data.Drasil.Citations
  , module Drasil.Metadata.Citations
  ) where

import Language.Drasil --(S,(:+:),(+:+),sC,phrase,F,Accent(..),Citation(..),CiteField(..))
import Data.Drasil.People (dParnas, pcClements, mCampidelli, dmWiess, rodPierce,
  wikiAuthors, rcHibbeler, sRobertson, jRobertson)
import Drasil.Metadata.Citations

-- * Citations

-- ** Papers

campidelli, parnas1972, parnasClements1984,
  rbrtsn2012, lineSource, pointSource,
  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"

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"

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"

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"