-- | Collects references common to all SRS documents in one list for easy use.
module Drasil.DocLang.References (secRefs) where

import Language.Drasil
import Drasil.DocLang.SRS
import Drasil.DocumentLanguage.Core (getTraceConfigUID)

import Drasil.Sections.TableOfAbbAndAcronyms (tableAbbAccRef)
import Drasil.Sections.TableOfSymbols (symbTableRef)
import Drasil.Sections.TableOfUnits (unitTableRef)
import Drasil.Sections.TraceabilityMandGs (traceMatAssumpAssump, traceMatAssumpOther, traceMatRefinement)
import Drasil.Sections.Requirements (reqInputsRef)
import Drasil.Sections.AuxiliaryConstants (tableOfConstantsRef)
import Drasil.Sections.SpecificSystemDescription (tInDataCstRef, tOutDataCstRef)


-- | All section references used in creating a Software Requirements Specification (SRS).
secRefs :: [Reference]
secRefs :: [Reference]
secRefs = [Reference]
sectionReferences [Reference] -> [Reference] -> [Reference]
forall a. [a] -> [a] -> [a]
++ [Reference
tableAbbAccRef, Reference
reqInputsRef, Reference
symbTableRef,
  Reference
unitTableRef, Reference
tableOfConstantsRef, Reference
tInDataCstRef, Reference
tOutDataCstRef]
  [Reference] -> [Reference] -> [Reference]
forall a. [a] -> [a] -> [a]
++ (TraceConfig -> Reference) -> [TraceConfig] -> [Reference]
forall a b. (a -> b) -> [a] -> [b]
map (Reference -> Reference
forall r.
(HasUID r, HasRefAddress r, HasShortName r) =>
r -> Reference
ref(Reference -> Reference)
-> (TraceConfig -> Reference) -> TraceConfig -> Reference
forall b c a. (b -> c) -> (a -> b) -> a -> c
.UID -> Reference
makeTabRef'(UID -> Reference)
-> (TraceConfig -> UID) -> TraceConfig -> Reference
forall b c a. (b -> c) -> (a -> b) -> a -> c
.TraceConfig -> UID
getTraceConfigUID) [TraceConfig
traceMatAssumpAssump, -- can this be deleted?
  TraceConfig
traceMatAssumpOther, TraceConfig
traceMatRefinement]