On avance bien

Il faut encore gérer le contenu des `state`
pull/1/head
Jean-Christophe Jameux 3 years ago
parent 7e502e9399
commit 768f6cd1b4
  1. 61
      src/GenerateurH5P.elm

@ -1440,25 +1440,6 @@ type H5pSubContext
| InteractiveVideoH5pSubContext | InteractiveVideoH5pSubContext
test =
succeed recorder
|= subContextParser
[ ( BranchingScenarioH5pSubContext, Just "BranchingScenario" )
, ( CoursePresentationH5pSubContext, Just "CoursePresentation" )
, ( TrueFalseH5pSubContext, Just "TrueFalse" )
, ( InteractiveVideoH5pSubContext, Just "InteractiveVideo" )
]
|= headlineParser
|= blocContentParser
|> andThen
(\record ->
case record.context of
_ ->
inContext TrueFalseContext <|
problem InconsistantStructure
)
h5pParser : Int -> Parser Context Problem (Generator H5p) h5pParser : Int -> Parser Context Problem (Generator H5p)
h5pParser depth = h5pParser depth =
succeed recorder succeed recorder
@ -1479,15 +1460,13 @@ h5pParser depth =
build content = build content =
new branchingScenarioField new branchingScenarioField
|> with2 startScreenField startScreenSubtitleField record.headline |> with2 startScreenField startScreenSubtitleField record.headline
|> with contentField (L.reverse content) |> with contentField content
|> BranchingScenarioH5P |> BranchingScenarioH5P
in in
succeed (R.map build << .content) succeed (R.map build << .content)
|= branchingScenarioParser (depth + 1) |= branchingScenarioParser (depth + 1)
{ content = R.constant [] { content = R.constant []
, lastIdUsed = -1 , lastIdUsed = -1
, --À revoir
headline = record.headline
} }
CoursePresentationH5pSubContext -> CoursePresentationH5pSubContext ->
@ -1518,7 +1497,6 @@ type BranchingScenarioSubContext
type alias BranchingScenarioState = type alias BranchingScenarioState =
{ content : Generator (List BranchingScenarioContent) { content : Generator (List BranchingScenarioContent)
, lastIdUsed : Int , lastIdUsed : Int
, headline : String
} }
@ -1562,12 +1540,12 @@ branchingScenarioParser depth state =
case record.context of case record.context of
BranchingQuestionBranchingScenarioSubContext -> BranchingQuestionBranchingScenarioSubContext ->
inContext BranchingQuestionContext <| inContext BranchingQuestionContext <|
succeed (succeed
(\newContent -> (\newState ->
{ state { state
| content = | content =
R.map2 L.append R.map2 L.append
newContent.content newState.content
state.content state.content
, lastIdUsed = state.lastIdUsed + 1 , lastIdUsed = state.lastIdUsed + 1
} }
@ -1575,12 +1553,16 @@ branchingScenarioParser depth state =
|= branchingQuestionParser (depth + 1) |= branchingQuestionParser (depth + 1)
{ alternatives = [] { alternatives = []
, content = R.constant [] , content = R.constant []
, lastIdUsed = state.lastIdUsed , lastIdUsed = state.lastIdUsed + 1
, question = record.headline , question = record.headline
} }
|> andThen (branchingScenarioParser depth)
)
CoursePresentationBranchingScenarioSubContext -> CoursePresentationBranchingScenarioSubContext ->
inContext CoursePresentationContext <| inContext CoursePresentationContext <|
(succeed
(\slides ->
let let
newContent = newContent =
buildContent buildContent
@ -1588,19 +1570,19 @@ branchingScenarioParser depth state =
record.headline record.headline
"Course Presentation" "Course Presentation"
"H5P.CoursePresentation 1.24" "H5P.CoursePresentation 1.24"
slides
in in
succeed
(\subContent ->
{ state { state
| content = | content =
R.map2 (::) R.map2 (::)
(newContent subContent) newContent
state.content state.content
, lastIdUsed = state.lastIdUsed + 1 , lastIdUsed = state.lastIdUsed + 1
} }
) )
|= coursePresentationParser (depth + 1) |= many coursePresentationParser (depth + 1)
|> andThen (branchingScenarioParser depth) |> andThen (branchingScenarioParser depth)
)
InteractiveVideoBranchingScenarioSubContext -> InteractiveVideoBranchingScenarioSubContext ->
inContext InteractiveVideoContext <| inContext InteractiveVideoContext <|
@ -1637,8 +1619,7 @@ branchingQuestionParser depth state =
(\alternative -> (\alternative ->
branchingScenarioParser (depth + 1) branchingScenarioParser (depth + 1)
{ content = R.constant [] { content = R.constant []
, lastIdUsed = state.lastIdUsed , lastIdUsed = state.lastIdUsed + 1
, headline = alternative
} }
|> andThen |> andThen
(\content -> (\content ->
@ -1681,8 +1662,7 @@ branchingQuestionParser depth state =
in in
succeed succeed
{ content = content { content = content
, lastIdUsed = state.lastIdUsed , lastIdUsed = state.lastIdUsed + 1
, headline = ""
} }
] ]
@ -1693,8 +1673,7 @@ type CoursePresentationSubContext
coursePresentationParser : Int -> Parser Context Problem (Generator TrueFalse) coursePresentationParser : Int -> Parser Context Problem (Generator TrueFalse)
coursePresentationParser depth = coursePresentationParser depth =
withStars depth succeed recorder
(succeed recorder
|= subContextParser |= subContextParser
[ ( TrueFalseCoursePresentationSubContext, Just "TrueFalse" ) [ ( TrueFalseCoursePresentationSubContext, Just "TrueFalse" )
] ]
@ -1709,7 +1688,6 @@ coursePresentationParser depth =
R.constant <| R.constant <|
new trueFalseField new trueFalseField
) )
)
interactiveVideoParser depth = interactiveVideoParser depth =
@ -1746,7 +1724,11 @@ withStars depth parser =
atLeastOneSpace = atLeastOneSpace =
succeed () succeed ()
|. token (Token " " MissingSpace) |. token (Token " " MissingSpace)
|. chompWhile (\x -> x == ' ' || x == '\t') |. mySpace
mySpace =
chompWhile (\x -> x == ' ' || x == '\t')
recorder context headline blocContent = recorder context headline blocContent =
@ -1767,6 +1749,7 @@ subContextParser subContexts =
Nothing -> Nothing ->
succeed () succeed ()
) )
|. mySpace
in in
oneOf (L.map subContextParserHelp subContexts) oneOf (L.map subContextParserHelp subContexts)

Loading…
Cancel
Save