Skip to content

Commit cd06383

Browse files
Merge pull request #4433 from JacquesCarette/sglpendWarn
removes extra calls to mkDocDesc
2 parents 3bd4751 + 15e4b37 commit cd06383

File tree

16 files changed

+128
-79
lines changed

16 files changed

+128
-79
lines changed

code/drasil-docLang/lib/Drasil/DocLang.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ module Drasil.DocLang (
1010
PDSub(..), ProblemDescription(..), SSDSec(..), SSDSub(..), SCSSub(..),
1111
SolChSpec(..),
1212
-- Drasil.DocumentLanguage.Core
13-
AppndxSec(..), AuxConstntSec(..), DerivationDisplay(..), Emphasis(..),
13+
AppndxSec(..), AuxConstntSec(..), DerivationDisplay(..), DocDesc, Emphasis(..),
1414
OffShelfSolnsSec(..), GSDSec(..), GSDSub(UsrChars, SystCons, SysCntxt),
1515
IntroSec(..), IntroSub(..), LFunc(..), Literature(Doc', Lit,Manual),
1616
RefSec(..), RefTab(..), StkhldrSec(..), StkhldrSub(Client, Cstmr),
1717
TConvention(..), TraceabilitySec(TraceabilityProg), TSIntro(..), TUIntro(..),
1818
-- *** Functions
1919
-- Drasil.DocumentLanguage
20-
mkDoc, fillTraceSI, fillcdbSRS, findAllRefs,
20+
mkDoc, fillcdbSRS, findAllRefs,
2121
-- ** Notebook
2222
-- | For generating Jupyter notebook lesson plans.
2323

@@ -73,9 +73,9 @@ module Drasil.DocLang (
7373
import Drasil.DocDecl (SRSDecl, DocSection(..), ReqrmntSec(..), ReqsSub(..),
7474
PDSub(..), ProblemDescription(..), SSDSec(..), SSDSub(..), SCSSub(..),
7575
SolChSpec(..))
76-
import Drasil.DocumentLanguage (mkDoc, fillTraceSI, fillcdbSRS, findAllRefs)
76+
import Drasil.DocumentLanguage (mkDoc, fillcdbSRS, findAllRefs)
7777
import Drasil.DocumentLanguage.Core (AppndxSec(..), AuxConstntSec(..),
78-
DerivationDisplay(..), Emphasis(..), OffShelfSolnsSec(..), GSDSec(..),
78+
DerivationDisplay(..), DocDesc, Emphasis(..), OffShelfSolnsSec(..), GSDSec(..),
7979
GSDSub(UsrChars, SystCons, SysCntxt), IntroSec(..), IntroSub(..), LFunc(..),
8080
Literature(Doc', Lit,Manual), RefSec(..), RefTab(..), StkhldrSec(..),
8181
StkhldrSub(Client, Cstmr), TConvention(..), TraceabilitySec(TraceabilityProg),

code/drasil-docLang/lib/Drasil/DocumentLanguage.hs

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
-- Over time, we'll want to have a cleaner separation, but doing that
66
-- all at once would break too much for too long. So we start here
77
-- instead.
8-
module Drasil.DocumentLanguage where
8+
module Drasil.DocumentLanguage (mkDoc, fillcdbSRS, findAllRefs) where
99

1010
import Control.Lens ((^.), set)
1111
import Data.Function (on)
@@ -16,6 +16,7 @@ import qualified Data.Map as Map (elems, assocs, keys)
1616
import Utils.Drasil (invert)
1717

1818
import Drasil.DocDecl (SRSDecl, mkDocDesc)
19+
import qualified Drasil.DocDecl as DD
1920
import Drasil.DocumentLanguage.Core (AppndxSec(..), AuxConstntSec(..),
2021
DerivationDisplay(..), DocDesc, DocSection(..), OffShelfSolnsSec(..), GSDSec(..),
2122
GSDSub(..), IntroSec(..), IntroSub(..), LCsSec(..), LFunc(..),
@@ -39,7 +40,7 @@ import Drasil.System
3940
import Drasil.GetChunks (ccss, ccss', citeDB)
4041

4142
import Drasil.Sections.TableOfAbbAndAcronyms (tableAbbAccGen)
42-
import Drasil.Sections.TableOfContents (toToC, findToC)
43+
import Drasil.Sections.TableOfContents (toToC)
4344
import Drasil.Sections.TableOfSymbols (table, tsIntro)
4445
import Drasil.Sections.TableOfUnits (tOfUnitSIName, tuIntro, defaultTUI)
4546
import qualified Drasil.DocLang.SRS as SRS (appendix,
@@ -72,12 +73,10 @@ import qualified Data.Drasil.Concepts.Documentation as Doc (likelyChg, section_,
7273
-- * Main Function
7374

7475
-- | Creates a document from a document description, a title combinator function, and system information.
75-
mkDoc :: SRSDecl -> (IdeaDict -> IdeaDict -> Sentence) -> System -> Document
76-
mkDoc dd comb si@SI {_sys = sys, _authors = docauthors} =
77-
Document (whatsTheBigIdea si `comb` nw sys) (foldlList Comma List $ map (S . name) docauthors) (findToC l) $
78-
mkSections si l
79-
where
80-
l = mkDocDesc si dd
76+
mkDoc :: SRSDecl -> (IdeaDict -> IdeaDict -> Sentence) -> (System, DocDesc) -> Document
77+
mkDoc srs comb (si@SI {_sys = sys, _authors = docauthors}, dd) =
78+
Document (whatsTheBigIdea si `comb` nw sys) (foldlList Comma List $ map (S . name) docauthors)
79+
(findToC srs) $ mkSections si dd
8180

8281
-- * Functions to Fill 'ChunkDB'
8382

@@ -90,17 +89,23 @@ mkDoc dd comb si@SI {_sys = sys, _authors = docauthors} =
9089
-- | Assuming a given 'ChunkDB' with no traces and minimal/no references, fill
9190
-- in for rest of system information. Currently fills in references,
9291
-- traceability matrix information and 'IdeaDict's.
93-
fillcdbSRS :: SRSDecl -> System -> System
94-
fillcdbSRS srsDec si = fillSecAndLC srsDec $ fillReferences srsDec $ fillTraceSI srsDec si
92+
fillcdbSRS :: SRSDecl -> System -> (System , DocDesc)
93+
fillcdbSRS srsDec si =
94+
(fillSecAndLC dd $ fillReferences sections $ fillTraceSI dd si , dd)
95+
where
96+
dd :: DocDesc
97+
dd = mkDocDesc si srsDec
98+
sections :: [Section]
99+
sections = mkSections si dd
95100

96101
-- | Fill in the 'Section's and 'LabelledContent' maps of the 'ChunkDB' from the 'SRSDecl'.
97-
fillSecAndLC :: SRSDecl -> System -> System
102+
fillSecAndLC :: DocDesc -> System -> System
98103
fillSecAndLC dd si = si2
99104
where
100105
-- Get current contents of si
101106
chkdb = si ^. systemdb
102107
-- extract sections and labelledcontent
103-
allSections = concatMap findAllSec $ mkSections si $ mkDocDesc si dd -- FIXME: `mkSections` on something particularly large that is immediately discarded is a sign that we're doing something wrong. That's in addition to `mkDocDesc`...
108+
allSections = concatMap findAllSec $ mkSections si dd -- FIXME: `mkSections` on something particularly large that is immediately discarded is a sign that we're doing something wrong.
104109
allLC = concatMap findAllLC allSections
105110
existingLC = map (fst . snd) $ Map.assocs $ labelledcontentTable chkdb
106111
-- fill in the appropriate chunkdb fields
@@ -125,14 +130,12 @@ fillSecAndLC dd si = si2
125130
findLCSecCons _ = []
126131

127132
-- | Takes in existing information from the Chunk database to construct a database of references.
128-
fillReferences :: SRSDecl -> System -> System
129-
fillReferences dd si@SI{_sys = sys} = si2
133+
fillReferences :: [Section] -> System -> System
134+
fillReferences allSections si@SI{_sys = sys} = si2
130135
where
131136
-- get old chunk database + ref database
132137
chkdb = si ^. systemdb
133138
cites = citeDB si
134-
-- convert SRSDecl into a list of sections (to easily get at all the references used in the SRS)
135-
allSections = mkSections si $ mkDocDesc si dd
136139
-- get refs from SRSDecl. Should include all section labels and labelled content.
137140
refsFromSRS = concatMap findAllRefs allSections
138141
-- get refs from the stuff already inside the chunk database
@@ -155,10 +158,6 @@ fillReferences dd si@SI{_sys = sys} = si2
155158
-- set new chunk database into system information
156159
si2 = set systemdb chkdb2 si
157160

158-
-- | Helper that gets references from definitions and models.
159-
dRefToRef :: HasDecRef a => a -> [Reference]
160-
dRefToRef r = map ref $ r ^. getDecRefs
161-
162161
-- | Recursively find all references in a section (meant for getting at 'LabelledContent').
163162
findAllRefs :: Section -> [Reference]
164163
findAllRefs (Section _ cs r) = r: concatMap findRefSecCons cs
@@ -169,10 +168,8 @@ findAllRefs (Section _ cs r) = r: concatMap findRefSecCons cs
169168
findRefSecCons _ = []
170169

171170
-- | Helper for filling in the traceability matrix and graph information into the system.
172-
fillTraceSI :: SRSDecl -> System -> System
173-
fillTraceSI dd si = fillTraceMaps l $ fillReqs l si
174-
where
175-
l = mkDocDesc si dd
171+
fillTraceSI :: DocDesc -> System -> System
172+
fillTraceSI dd si = fillTraceMaps dd $ fillReqs dd si
176173

177174
-- | Fills in the traceabiliy matrix and graphs section of the system information using the document description.
178175
fillTraceMaps :: DocDesc -> System -> System
@@ -447,3 +444,12 @@ mkBib bib = SRS.reference [UlC $ ulcc (Bib bib)] []
447444
-- | Helper for making the Appendix section.
448445
mkAppndxSec :: AppndxSec -> Section
449446
mkAppndxSec (AppndxProg cs) = SRS.appendix cs []
447+
448+
-- ** Find Table of Contents
449+
450+
-- Find more concise way to do this
451+
-- | Finds whether the Table of Contents is in a SRSDecl.
452+
findToC :: SRSDecl -> ShowTableOfContents
453+
findToC [] = NoToC
454+
findToC (DD.TableOfContents:_) = ToC
455+
findToC (_:dds) = findToC dds

code/drasil-docLang/lib/Drasil/Sections/Requirements.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import Data.Drasil.Concepts.Math (unit_)
2828

2929
import qualified Drasil.DocLang.SRS as SRS
3030
import Drasil.DocumentLanguage.Units (toSentence)
31-
import Data.List (nub)
3231

3332
import Control.Lens ((^.))
3433
import Data.Bifunctor (bimap)
@@ -42,7 +41,7 @@ reqF = SRS.require [reqIntro]
4241
-- For listing input requirements.
4342
fullReqs :: (Quantity i, MayHaveUnit i) => [i] -> Sentence -> [ConceptInstance] -> [ConceptInstance]
4443
fullReqs [] _ _ = []
45-
fullReqs i d r = nub $ inReq (inReqDesc (mkInputPropsTable i) d) : r-- ++ [outReq (outReqDesc outTable)]
44+
fullReqs i d r = inReq (inReqDesc (mkInputPropsTable i) d) : r -- ++ [outReq (outReqDesc outTable)]
4645

4746
-- | Prepends given LabelledContent to an input-value table.
4847
fullTables :: (Quantity i, MayHaveUnit i) => [i] -> [LabelledContent] -> [LabelledContent]

code/drasil-docLang/lib/Drasil/Sections/TableOfContents.hs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{-# Language TupleSections #-}
22
-- | Standard code to make a table of contents.
3-
module Drasil.Sections.TableOfContents (toToC, findToC) where
3+
module Drasil.Sections.TableOfContents (toToC) where
44

55
import qualified Data.Drasil.Concepts.Documentation as Doc
66
import qualified Drasil.DocLang.SRS as SRS
@@ -188,9 +188,3 @@ mktAppndxSec (AppndxProg _) = Flat $ namedRef SRS.appendixLabel $ titleize Doc.
188188
mktOffShelfSolnSec :: OffShelfSolnsSec -> ItemType
189189
mktOffShelfSolnSec (OffShelfSolnsProg _) = Flat $ namedRef SRS.offShelfSolnsLabel $ titleize' Doc.offShelfSolution
190190

191-
-- Find more concise way to do this
192-
-- | Finds whether the Table of Contents is in a SRSDecl.
193-
findToC :: [DocSection] -> ShowTableOfContents
194-
findToC [] = NoToC
195-
findToC (TableOfContents:_) = ToC
196-
findToC (_:dds) = findToC dds

code/drasil-example/dblpend/lib/Drasil/DblPend/Body.hs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Language.Drasil hiding (organization, section)
88
import qualified Language.Drasil.Development as D
99
import Theory.Drasil (TheoryModel, output)
1010
import Drasil.SRSDocument
11+
import Drasil.DocLang (DocDesc)
1112
import Drasil.Generator (cdb)
1213
import qualified Drasil.DocLang.SRS as SRS
1314
import Drasil.System (SystemKind(Specification), mkSystem, systemdb)
@@ -47,11 +48,15 @@ import Data.Drasil.ExternalLibraries.ODELibraries (scipyODESymbols,
4748
osloSymbols, apacheODESymbols, odeintSymbols, odeInfoChunks)
4849
import Drasil.DblPend.ODEs (dblPenODEInfo)
4950

50-
srs :: Document
51-
srs = mkDoc mkSRS (S.forGen titleize phrase) fullSI
51+
sd :: (System , DocDesc)
52+
sd = fillcdbSRS mkSRS si
5253

54+
-- sigh, this is used by others
5355
fullSI :: System
54-
fullSI = fillcdbSRS mkSRS si
56+
fullSI = fst sd
57+
58+
srs :: Document
59+
srs = mkDoc mkSRS (S.forGen titleize phrase) sd
5560

5661
printSetting :: PrintingInformation
5762
printSetting = piSys (fullSI ^. systemdb) Equational defaultConfiguration

code/drasil-example/gamephysics/lib/Drasil/GamePhysics/Body.hs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Control.Lens ((^.))
55
import Language.Drasil hiding (organization, section)
66
import Drasil.Metadata (dataDefn, inModel)
77
import Drasil.SRSDocument
8+
import Drasil.DocLang (DocDesc)
89
import Drasil.Generator (cdb)
910
import qualified Drasil.DocLang.SRS as SRS
1011
import Language.Drasil.Chunk.Concept.NamedCombinators
@@ -47,11 +48,15 @@ import Drasil.GamePhysics.Unitals (symbolsAll, outputConstraints,
4748
inputSymbols, outputSymbols, inputConstraints)
4849
import Drasil.GamePhysics.GenDefs (generalDefns)
4950

50-
srs :: Document
51-
srs = mkDoc mkSRS (S.forGen titleize short) fullSI
51+
sd :: (System , DocDesc)
52+
sd = fillcdbSRS mkSRS si
5253

54+
-- sigh, this is used by others
5355
fullSI :: System
54-
fullSI = fillcdbSRS mkSRS si
56+
fullSI = fst sd
57+
58+
srs :: Document
59+
srs = mkDoc mkSRS (S.forGen titleize short) sd
5560

5661
printSetting :: PrintingInformation
5762
printSetting = piSys (fullSI ^. systemdb) Equational defaultConfiguration

code/drasil-example/glassbr/lib/Drasil/GlassBR/Body.hs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import qualified Language.Drasil.Development as D
88

99
import Drasil.Metadata as M (dataDefn, inModel, thModel)
1010
import Drasil.SRSDocument
11+
import Drasil.DocLang (DocDesc, auxSpecSent, termDefnF')
1112
import Drasil.Generator (cdb)
12-
import Drasil.DocLang (auxSpecSent, termDefnF')
1313
import qualified Drasil.DocLang.SRS as SRS (reference, assumpt, inModel)
1414
import Language.Drasil.Chunk.Concept.NamedCombinators
1515
import qualified Language.Drasil.Sentence.Combinators as S
@@ -51,11 +51,15 @@ import Drasil.GlassBR.Unitals (blast, blastTy, bomb, explosion, constants,
5151
glassTypes, glBreakage, lateralLoad, load, loadTypes, pbTol, probBr, stressDistFac, probBreak,
5252
sD, termsWithAccDefn, termsWithDefsOnly, concepts, dataConstraints)
5353

54-
srs :: Document
55-
srs = mkDoc mkSRS (S.forGen titleize phrase) fullSI
54+
sd :: (System , DocDesc)
55+
sd = fillcdbSRS mkSRS si
5656

57+
-- sigh, this is used by others
5758
fullSI :: System
58-
fullSI = fillcdbSRS mkSRS si
59+
fullSI = fst sd
60+
61+
srs :: Document
62+
srs = mkDoc mkSRS (S.forGen titleize phrase) sd
5963

6064
printSetting :: PrintingInformation
6165
printSetting = piSys (fullSI ^. systemdb) Equational defaultConfiguration

code/drasil-example/hghc/lib/Drasil/HGHC/Body.hs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Control.Lens ((^.))
44

55
import Language.Drasil hiding (Manual) -- Citation name conflict. FIXME: Move to different namespace
66
import Drasil.SRSDocument
7+
import Drasil.DocLang (DocDesc)
78
import Drasil.Generator (cdb)
89
import qualified Language.Drasil.Sentence.Combinators as S
910
import Drasil.System (mkSystem, SystemKind(Specification), systemdb)
@@ -15,11 +16,15 @@ import Drasil.HGHC.MetaConcepts (progName)
1516
import Data.Drasil.People (spencerSmith)
1617
import Data.Drasil.Concepts.Thermodynamics as CT (heatTrans)
1718

18-
srs :: Document
19-
srs = mkDoc mkSRS S.forT fullSI
19+
sd :: (System , DocDesc)
20+
sd = fillcdbSRS mkSRS si
2021

22+
-- sigh, this is used by others
2123
fullSI :: System
22-
fullSI = fillcdbSRS mkSRS si
24+
fullSI = fst sd
25+
26+
srs :: Document
27+
srs = mkDoc mkSRS S.forT sd
2328

2429
printSetting :: PrintingInformation
2530
printSetting = piSys (fullSI ^. systemdb) Equational defaultConfiguration

code/drasil-example/pdcontroller/lib/Drasil/PDController/Body.hs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Control.Lens ((^.))
55
import Language.Drasil
66
import Drasil.Metadata (dataDefn)
77
import Drasil.SRSDocument
8+
import Drasil.DocLang (DocDesc)
89
import Drasil.Generator (cdb)
910
import qualified Drasil.DocLang.SRS as SRS (inModel)
1011
import qualified Language.Drasil.Sentence.Combinators as S
@@ -43,11 +44,15 @@ import Drasil.PDController.ODEs (pidODEInfo)
4344
naveen :: Person
4445
naveen = person "Naveen Ganesh" "Muralidharan"
4546

46-
srs :: Document
47-
srs = mkDoc mkSRS (S.forGen titleize phrase) fullSI
47+
sd :: (System , DocDesc)
48+
sd = fillcdbSRS mkSRS si
4849

50+
-- sigh, this is used by others
4951
fullSI :: System
50-
fullSI = fillcdbSRS mkSRS si
52+
fullSI = fst sd
53+
54+
srs :: Document
55+
srs = mkDoc mkSRS (S.forGen titleize phrase) sd
5156

5257
printSetting :: PrintingInformation
5358
printSetting = piSys (fullSI ^. systemdb) Equational defaultConfiguration

code/drasil-example/projectile/lib/Drasil/Projectile/Body.hs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Drasil.Metadata (dataDefn, genDefn, inModel, thModel)
66
import Language.Drasil
77
import qualified Language.Drasil.Development as D
88
import Drasil.SRSDocument
9+
import Drasil.DocLang (DocDesc)
910
import Drasil.Generator (cdb)
1011
import Language.Drasil.Chunk.Concept.NamedCombinators
1112
import qualified Language.Drasil.NounPhrase.Combinators as NP
@@ -51,11 +52,15 @@ import Drasil.Projectile.Unitals
5152

5253
import Theory.Drasil (TheoryModel)
5354

54-
srs :: Document
55-
srs = mkDoc mkSRS (S.forGen titleize phrase) fullSI
55+
sd :: (System , DocDesc)
56+
sd = fillcdbSRS mkSRS si
5657

58+
-- sigh, this is used by others
5759
fullSI :: System
58-
fullSI = fillcdbSRS mkSRS si
60+
fullSI = fst sd
61+
62+
srs :: Document
63+
srs = mkDoc mkSRS (S.forGen titleize phrase) sd
5964

6065
printSetting :: PrintingInformation
6166
printSetting = piSys (fullSI ^. systemdb) Equational defaultConfiguration

0 commit comments

Comments
 (0)