module Drasil.Projectile.Lesson.Review where

import Data.Drasil.Concepts.Physics (motion, position, time, velocity)
import Data.Drasil.Concepts.Math (equation)
import qualified Drasil.Projectile.Expressions as E (lcrectVel, lcrectPos, lcrectNoTime)
import qualified Data.Drasil.Quantities.Physics as QP (speed, time, scalarPos, iPos, iSpeed, constAccel)
import Language.Drasil
import qualified Language.Drasil.Sentence.Combinators as S

reviewContent :: [Contents]
reviewContent :: [Contents]
reviewContent = [Contents
reviewHead, Contents
reviewContextP1, LabelledContent -> Contents
LlC LabelledContent
E.lcrectVel, LabelledContent -> Contents
LlC LabelledContent
E.lcrectPos, LabelledContent -> Contents
LlC LabelledContent
E.lcrectNoTime, Contents
reviewEqns, Contents
reviewContextP2]

reviewHead, reviewContextP1, reviewEqns, reviewContextP2 :: Contents
reviewHead :: Contents
reviewHead = [Sentence] -> Contents
foldlSP_ [Int -> Sentence -> Sentence
headSent Int
2 (String -> Sentence
S String
"Rectilinear Kinematics: Continuous Motion")]
reviewContextP1 :: Contents
reviewContextP1
  = [Sentence] -> Contents
foldlSP_
      [String -> Sentence
S String
"As covered previously, the", forall n. NamedIdea n => n -> Sentence
plural ConceptChunk
equation, String -> Sentence
S String
"relating", forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
velocity, Sentence -> Sentence
sParen (ModelExpr -> Sentence
eS (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
QP.speed)) Sentence -> Sentence -> Sentence
`sC` 
        forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
position, Sentence -> Sentence
sParen (ModelExpr -> Sentence
eS (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
QP.scalarPos)) Sentence -> Sentence -> Sentence
`S.and_` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
time, Sentence -> Sentence
sParen (ModelExpr -> Sentence
eS (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
QP.time)) 
        Sentence -> Sentence -> Sentence
`S.for` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
motion Sentence -> Sentence -> Sentence
`S.in_` String -> Sentence
S String
"one dimension with", forall n. NamedIdea n => n -> Sentence
phrase UnitalChunk
QP.constAccel, 
        Sentence -> Sentence
sParen (ModelExpr -> Sentence
eS (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
QP.constAccel)) Sentence -> Sentence -> Sentence
+:+ String -> Sentence
S String
"are as follows:"]

reviewEqns :: Contents
reviewEqns 
  = [Sentence] -> Contents
foldlSP 
      [String -> Sentence
S String
"where", ModelExpr -> Sentence
eS (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
QP.iSpeed) Sentence -> Sentence -> Sentence
`S.and_` ModelExpr -> Sentence
eS (forall r c. (ExprC r, HasUID c, HasSymbol c) => c -> r
sy UnitalChunk
QP.iPos), 
       String -> Sentence
S String
"are the initial", forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
velocity Sentence -> Sentence -> Sentence
`S.and_` forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
position, String -> Sentence
S String
",respectively"]

reviewContextP2 :: Contents
reviewContextP2
  = [Sentence] -> Contents
foldlSP 
      [String -> Sentence
S String
"Only two of these", forall n. NamedIdea n => n -> Sentence
plural ConceptChunk
equation, String -> Sentence
S String
"are independent, since the third" Sentence -> Sentence -> Sentence
+:+
       forall n. NamedIdea n => n -> Sentence
phrase ConceptChunk
equation, String -> Sentence
S String
"can always be derived from the other two"]