From dde582de8a041136596164a766cefe37e90e1444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Optimal=20Sup-Sp=C3=A9?= Date: Sat, 24 Sep 2022 17:14:25 +0200 Subject: [PATCH] Site fonctionnel --- src/GenerateurH5P.elm | 121 +++++++++++++++++++++++++++++++----------- 1 file changed, 91 insertions(+), 30 deletions(-) diff --git a/src/GenerateurH5P.elm b/src/GenerateurH5P.elm index 3e70b68..6e59743 100644 --- a/src/GenerateurH5P.elm +++ b/src/GenerateurH5P.elm @@ -2196,7 +2196,7 @@ contentParser = preambleParser = -- Plus compliqué que nécessaire, en vue d'améliorations futures succeed identity - |. blocContentParser + |. genericBlocContentParser type H5pSubContext @@ -2249,8 +2249,8 @@ branchingScenarioParser depth = |> REx.sequence |> buildBranchingScenario title ) - |= headlineParser - |. blocContentParser + |= genericHeadlineParser + |. genericBlocContentParser |= branchingScenarioContentParser (depth + 1) { content = [], lastIdUsed = -1 } @@ -2372,8 +2372,8 @@ branchingQuestionParser : -> Parser Context Problem BranchingScenarioState branchingQuestionParser depth state = succeed identity - |= headlineParser - |. blocContentParser + |= genericHeadlineParser + |. genericBlocContentParser |> andThen (\question -> succeed @@ -2411,8 +2411,8 @@ branchingQuestionAlternativeParser depth state = [ withStars depth <| inContext BranchingQuestionAlternativeContext <| (succeed identity - |= headlineParser - |. blocContentParser + |= genericHeadlineParser + |. genericBlocContentParser |> andThen (\alternative -> branchingScenarioContentParser (depth + 1) @@ -2464,15 +2464,15 @@ branchingQuestionAlternativeParser depth state = coursePresentationParser depth = succeed buildCoursePresentation - |. headlineParser - |. blocContentParser + |. genericHeadlineParser + |. genericBlocContentParser |= many coursePresentationSlideParser (depth + 1) coursePresentationSlideParser depth = succeed buildSlide - |. headlineParser - |. blocContentParser + |. genericHeadlineParser + |. genericBlocContentParser |= many coursePresentationSlideElementParser (depth + 1) @@ -2507,15 +2507,77 @@ coursePresentationSlideElementParser depth = trueFalseParser = - succeed (\proposition -> buildTrueFalse proposition True Nothing Nothing) - |= headlineParser - |. blocContentParser + succeed + (\truthValue proposition feedback -> + buildTrueFalse proposition truthValue feedback.onCorrect feedback.onWrong + ) + |= signParser + |= genericHeadlineParser + |= trueFalseBlocContentParser { onCorrect = [], onWrong = [] } + + +signParser = + oneOf + [ succeed True + |. token (Token "+" (Missing "+")) + , succeed False + |. token (Token "-" (Missing "-")) + ] + + +trueFalseBlocContentParser feedback = + oneOf + [ succeed identity + |. spacesOrTabs + |= oneOf + [ succeed + (\truthValue line -> + case truthValue of + True -> + { feedback | onCorrect = line :: feedback.onCorrect } + + False -> + { feedback | onWrong = line :: feedback.onWrong } + ) + |. spacesOrTabs + |= signParser + |. atLeastOneSpace + |= getChompedString (chompWhile ((/=) '\n')) + |. oneOf + [ token (Token "\n" GenericProblem) + , succeed () + ] + |> andThen trueFalseBlocContentParser + , succeed + (\line -> + { feedback + | onCorrect = line :: feedback.onCorrect + , onWrong = line :: feedback.onWrong + } + ) + |= getChompedString + (succeed () + |. chompIf ((/=) '*') EndOfFile + |. chompWhile ((/=) '\n') + |. chompWhile ((/=) '\n') + ) + |. oneOf + [ token (Token "\n" GenericProblem) + , succeed () + ] + |> andThen trueFalseBlocContentParser + ] + , succeed + { onCorrect = Just <| S.join "\n" <| L.reverse feedback.onCorrect + , onWrong = Just <| S.join "\n" <| L.reverse feedback.onWrong + } + ] interactiveVideoParser depth = succeed buildInteractiveVideo - |= headlineParser - |= blocContentParser + |= genericHeadlineParser + |= genericBlocContentParser @@ -2551,19 +2613,16 @@ withStars depth parser = atLeastOneSpace = succeed () - |. token (Token " " MissingSpace) - |. mySpace + |. space + |. spacesOrTabs -mySpace = - chompWhile (\x -> x == ' ' || x == '\t') +space = + token (Token " " MissingSpace) -recorder context headline blocContent = - { context = context - , headline = headline - , blocContent = blocContent - } +spacesOrTabs = + chompWhile (\x -> x == ' ' || x == '\t') subContextParser subContexts = @@ -2577,12 +2636,12 @@ subContextParser subContexts = Nothing -> succeed () ) - |. mySpace + |. spacesOrTabs in oneOf (L.map subContextParserHelp subContexts) -headlineParser = +genericHeadlineParser = succeed identity |= (getChompedString <| chompWhile ((/=) '\n')) |. oneOf @@ -2591,7 +2650,7 @@ headlineParser = ] -blocContentParser = +genericBlocContentParser = getChompedString (succeed identity |. chompWhile ((/=) '*') @@ -2603,7 +2662,7 @@ blocContentParser = [ end EndOfFile , succeed () |. token (Token "*" EndOfFile) - |. blocContentParser + |. genericBlocContentParser ] else @@ -2799,7 +2858,9 @@ buildCoursePresentationHelp slides = , summarySlideSolutionButton = True } , presentation = - { globalBackgroundSelector = { fillGlobalBackground = "" } + { globalBackgroundSelector = + { fillGlobalBackground = "" + } , keywordListAlwaysShow = False , keywordListAutoHide = False , keywordListEnabled = True