module Drasil.Sections.TableOfUnits (tOfUnitDesc, tOfUnitSIName, unitTableRef, tunit, tunit', tuIntro, defaultTUI) where
import Control.Lens ((^.))
import Language.Drasil
import Data.Drasil.Concepts.Documentation (symbol_, description, tOfUnit)
import Drasil.DocumentLanguage.Core (TUIntro(..), RefTab(..))
tOfUnitSIName :: IsUnit s => [s] -> LabelledContent
tOfUnitSIName :: [s] -> LabelledContent
tOfUnitSIName = [Sentence] -> [s -> Sentence] -> [s] -> LabelledContent
forall s. [Sentence] -> [s -> Sentence] -> [s] -> LabelledContent
tOfUnitHelper [NamedChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
atStart NamedChunk
symbol_, NamedChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
atStart NamedChunk
description, String -> Sentence
S "SI Name"]
[USymb -> Sentence
Sy (USymb -> Sentence) -> (s -> USymb) -> s -> Sentence
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> USymb
forall u. HasUnitSymbol u => u -> USymb
usymb, (s -> Getting Sentence s Sentence -> Sentence
forall s a. s -> Getting a s a -> a
^. Getting Sentence s Sentence
forall c. Definition c => Lens' c Sentence
defn), s -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase]
tOfUnitDesc :: IsUnit s => [s] -> LabelledContent
tOfUnitDesc :: [s] -> LabelledContent
tOfUnitDesc = [Sentence] -> [s -> Sentence] -> [s] -> LabelledContent
forall s. [Sentence] -> [s -> Sentence] -> [s] -> LabelledContent
tOfUnitHelper [NamedChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
atStart NamedChunk
symbol_, NamedChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
atStart NamedChunk
description]
[USymb -> Sentence
Sy (USymb -> Sentence) -> (s -> USymb) -> s -> Sentence
forall b c a. (b -> c) -> (a -> b) -> a -> c
. s -> USymb
forall u. HasUnitSymbol u => u -> USymb
usymb, \x :: s
x -> (s
x s -> Getting Sentence s Sentence -> Sentence
forall s a. s -> Getting a s a -> a
^. Getting Sentence s Sentence
forall c. Definition c => Lens' c Sentence
defn) Sentence -> Sentence -> Sentence
+:+ Sentence -> Sentence
sParen (s -> Sentence
forall n. (HasUID n, NamedIdea n) => n -> Sentence
phrase s
x)]
tOfUnitHelper :: [Sentence] -> [s -> Sentence] -> [s] -> LabelledContent
tOfUnitHelper :: [Sentence] -> [s -> Sentence] -> [s] -> LabelledContent
tOfUnitHelper headers :: [Sentence]
headers fs :: [s -> Sentence]
fs u :: [s]
u = Reference -> RawContent -> LabelledContent
llcc Reference
unitTableRef (RawContent -> LabelledContent) -> RawContent -> LabelledContent
forall a b. (a -> b) -> a -> b
$ [Sentence] -> [[Sentence]] -> Sentence -> Bool -> RawContent
Table [Sentence]
headers
([s -> Sentence] -> [s] -> [[Sentence]]
forall a b. [a -> b] -> [a] -> [[b]]
mkTable [s -> Sentence]
fs [s]
u) (String -> Sentence
S "Table of Units") Bool
True
unitTableRef :: Reference
unitTableRef :: Reference
unitTableRef = String -> Reference
makeTabRef "ToU"
tunit, tunit' :: [TUIntro] -> RefTab
tunit :: [TUIntro] -> RefTab
tunit t :: [TUIntro]
t = [TUIntro] -> ([UnitDefn] -> LabelledContent) -> RefTab
TUnits' [TUIntro]
t [UnitDefn] -> LabelledContent
forall s. IsUnit s => [s] -> LabelledContent
tOfUnitSIName
tunit' :: [TUIntro] -> RefTab
tunit' t :: [TUIntro]
t = [TUIntro] -> ([UnitDefn] -> LabelledContent) -> RefTab
TUnits' [TUIntro]
t [UnitDefn] -> LabelledContent
forall s. IsUnit s => [s] -> LabelledContent
tOfUnitDesc
tuIntro :: [TUIntro] -> Contents
tuIntro :: [TUIntro] -> Contents
tuIntro x :: [TUIntro]
x = Sentence -> Contents
mkParagraph (Sentence -> Contents) -> Sentence -> Contents
forall a b. (a -> b) -> a -> b
$ (TUIntro -> Sentence -> Sentence)
-> Sentence -> [TUIntro] -> Sentence
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr (Sentence -> Sentence -> Sentence
(+:+) (Sentence -> Sentence -> Sentence)
-> (TUIntro -> Sentence) -> TUIntro -> Sentence -> Sentence
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TUIntro -> Sentence
tuI) Sentence
EmptyS [TUIntro]
x
tuI :: TUIntro -> Sentence
tuI :: TUIntro -> Sentence
tuI System =
String -> Sentence
S "The unit system used throughout is SI (Système International d'Unités)."
tuI TUPurpose =
String -> Sentence
S "For each unit" Sentence -> Sentence -> Sentence
`sC` String -> Sentence
S "the" Sentence -> Sentence -> Sentence
+:+ Reference -> Sentence -> Sentence
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Sentence -> Sentence
namedRef Reference
unitTableRef (NamedChunk -> Sentence
forall n. NamedIdea n => n -> Sentence
titleize' NamedChunk
tOfUnit) Sentence -> Sentence -> Sentence
+:+. String -> Sentence
S "lists the symbol, a description and the SI name"
tuI Derived =
String -> Sentence
S "In addition to the basic units, several derived units are also used."
defaultTUI :: [TUIntro]
defaultTUI :: [TUIntro]
defaultTUI = [TUIntro
System, TUIntro
Derived, TUIntro
TUPurpose]