-- | Defines requirements shared by many examples.
module Data.Drasil.Requirements (portable) where

import Language.Drasil
import Language.Drasil.Document (ConceptInstance, cic)

import Drasil.Metadata.Concepts.Computation (defaultOSs)
import Drasil.Metadata.Documentation (nonFuncReqDom)

-- | Common Non-Functional Requirement for Portability, targeting 'defaultOSs'.
portable :: ConceptInstance
portable :: ConceptInstance
portable = String -> Sentence -> String -> ConceptChunk -> ConceptInstance
forall c.
Concept c =>
String -> Sentence -> String -> c -> ConceptInstance
cic String
"portable" ([Sentence] -> Sentence
foldlSent [
  String -> Sentence
S String
"The code shall be portable to multiple environments, particularly",
  SepType -> FoldType -> [Sentence] -> Sentence
foldlList SepType
Comma FoldType
List ([Sentence] -> Sentence) -> [Sentence] -> Sentence
forall a b. (a -> b) -> a -> b
$ (IdeaDict -> Sentence) -> [IdeaDict] -> [Sentence]
forall a b. (a -> b) -> [a] -> [b]
map IdeaDict -> Sentence
forall n. NamedIdea n => n -> Sentence
phrase [IdeaDict]
defaultOSs
  ]) String
"Portability" ConceptChunk
nonFuncReqDom