On avance !

pull/1/head
Optimal Sup-Spé 3 years ago
parent 5f9077a002
commit 64b707c191
  1. 316
      src/GenerateurH5P.elm

@ -349,6 +349,39 @@ type alias BranchingScenarioStartScreen =
} }
type alias BranchingScenarioContent =
{ contentBehaviour : String
, feedback : BranchingScenarioContentFeedback
, forceContentFinished : String
, showContentTitle : Bool
, type_ : BranchingScenarioContentType
}
type alias BranchingScenarioContentFeedback =
{ subtitle : String
}
type alias BranchingScenarioContentType =
{ library : String
, metadata : BranchingScenarioContentTypeMetadata
, params : BranchingScenarioContentTypeParams
, subContentId : String
}
type alias BranchingScenarioContentTypeMetadata =
{ contentType : String
, license : String
, title : String
}
type alias BranchingScenarioContentTypeParams =
{}
branchingScenarioDecoder : D.Decoder BranchingScenario branchingScenarioDecoder : D.Decoder BranchingScenario
branchingScenarioDecoder = branchingScenarioDecoder =
D.map6 BranchingScenario D.map6 BranchingScenario
@ -403,6 +436,44 @@ branchingScenarioStartScreenDecoder =
(D.field "startScreenTitle" D.string) (D.field "startScreenTitle" D.string)
branchingScenarioContentDecoder : D.Decoder BranchingScenarioContent
branchingScenarioContentDecoder =
D.map5 BranchingScenarioContent
(D.field "contentBehaviour" D.string)
(D.field "feedback" branchingScenarioContentFeedbackDecoder)
(D.field "forceContentFinished" D.string)
(D.field "showContentTitle" D.bool)
(D.field "type" branchingScenarioContentTypeDecoder)
branchingScenarioContentFeedbackDecoder : D.Decoder BranchingScenarioContentFeedback
branchingScenarioContentFeedbackDecoder =
D.map BranchingScenarioContentFeedback
(D.field "subtitle" D.string)
branchingScenarioContentTypeDecoder : D.Decoder BranchingScenarioContentType
branchingScenarioContentTypeDecoder =
D.map4 BranchingScenarioContentType
(D.field "library" D.string)
(D.field "metadata" branchingScenarioContentTypeMetadataDecoder)
(D.field "params" branchingScenarioContentTypeParamsDecoder)
(D.field "subContentId" D.string)
branchingScenarioContentTypeMetadataDecoder : D.Decoder BranchingScenarioContentTypeMetadata
branchingScenarioContentTypeMetadataDecoder =
D.map3 BranchingScenarioContentTypeMetadata
(D.field "contentType" D.string)
(D.field "license" D.string)
(D.field "title" D.string)
branchingScenarioContentTypeParamsDecoder : D.Decoder BranchingScenarioContentTypeParams
branchingScenarioContentTypeParamsDecoder =
D.succeed BranchingScenarioContentTypeParams
encodedBranchingScenario : BranchingScenario -> E.Value encodedBranchingScenario : BranchingScenario -> E.Value
encodedBranchingScenario branchingScenario = encodedBranchingScenario branchingScenario =
E.object E.object
@ -466,47 +537,11 @@ encodedBranchingScenarioStartScreen branchingScenarioStartScreen =
] ]
type alias BranchingScenarioContent =
{ feedback : BranchingScenarioContentFeedback
, forceContentFinished : String
, showContentTitle : Bool
, type_ : BranchingScenarioContentType
}
type alias BranchingScenarioContentFeedback =
{ subtitle : String
}
type alias BranchingScenarioContentType =
{}
branchingScenarioContentDecoder : D.Decoder BranchingScenarioContent
branchingScenarioContentDecoder =
D.map4 BranchingScenarioContent
(D.field "feedback" branchingScenarioContentFeedbackDecoder)
(D.field "forceContentFinished" D.string)
(D.field "showContentTitle" D.bool)
(D.field "type" branchingScenarioContentTypeDecoder)
branchingScenarioContentFeedbackDecoder : D.Decoder BranchingScenarioContentFeedback
branchingScenarioContentFeedbackDecoder =
D.map BranchingScenarioContentFeedback
(D.field "subtitle" D.string)
branchingScenarioContentTypeDecoder : D.Decoder BranchingScenarioContentType
branchingScenarioContentTypeDecoder =
D.succeed BranchingScenarioContentType
encodedBranchingScenarioContent : BranchingScenarioContent -> E.Value encodedBranchingScenarioContent : BranchingScenarioContent -> E.Value
encodedBranchingScenarioContent branchingScenarioContent = encodedBranchingScenarioContent branchingScenarioContent =
E.object E.object
[ ( "feedback", encodedBranchingScenarioContentFeedback branchingScenarioContent.feedback ) [ ( "contentBehaviour", E.string branchingScenarioContent.contentBehaviour )
, ( "feedback", encodedBranchingScenarioContentFeedback branchingScenarioContent.feedback )
, ( "forceContentFinished", E.string branchingScenarioContent.forceContentFinished ) , ( "forceContentFinished", E.string branchingScenarioContent.forceContentFinished )
, ( "showContentTitle", E.bool branchingScenarioContent.showContentTitle ) , ( "showContentTitle", E.bool branchingScenarioContent.showContentTitle )
, ( "type", encodedBranchingScenarioContentType branchingScenarioContent.type_ ) , ( "type", encodedBranchingScenarioContentType branchingScenarioContent.type_ )
@ -522,6 +557,25 @@ encodedBranchingScenarioContentFeedback branchingScenarioContentFeedback =
encodedBranchingScenarioContentType : BranchingScenarioContentType -> E.Value encodedBranchingScenarioContentType : BranchingScenarioContentType -> E.Value
encodedBranchingScenarioContentType branchingScenarioContentType = encodedBranchingScenarioContentType branchingScenarioContentType =
E.object
[ ( "library", E.string branchingScenarioContentType.library )
, ( "metadata", encodedBranchingScenarioContentTypeMetadata branchingScenarioContentType.metadata )
, ( "params", encodedBranchingScenarioContentTypeParams branchingScenarioContentType.params )
, ( "subContentId", E.string branchingScenarioContentType.subContentId )
]
encodedBranchingScenarioContentTypeMetadata : BranchingScenarioContentTypeMetadata -> E.Value
encodedBranchingScenarioContentTypeMetadata branchingScenarioContentTypeMetadata =
E.object
[ ( "contentType", E.string branchingScenarioContentTypeMetadata.contentType )
, ( "license", E.string branchingScenarioContentTypeMetadata.license )
, ( "title", E.string branchingScenarioContentTypeMetadata.title )
]
encodedBranchingScenarioContentTypeParams : BranchingScenarioContentTypeParams -> E.Value
encodedBranchingScenarioContentTypeParams branchingScenarioContentTypeParams =
E.object E.object
[] []
@ -539,16 +593,16 @@ nouveauBranchingScenario =
, includeInteractionsScores = True , includeInteractionsScores = True
} }
, startScreen = , startScreen =
{ startScreenTitle = "<p>Début du parcours</p>\n" { startScreenTitle = "<p>Parcours personnalisé</p>\n"
, startScreenSubtitle = "<p>Préparez-vous à l'aventure !</p>\n" , startScreenSubtitle = "<p>Préparez bien vos méninges !</p>\n"
} }
, behaviour = , behaviour =
{ enableBackwardsNavigation = True { enableBackwardsNavigation = True
, forceContentFinished = False , forceContentFinished = False
} }
, l10n = , l10n =
{ startScreenButtonText = "Commencer le cours" { startScreenButtonText = "Commencer le parcours"
, endScreenButtonText = "Recommencer le cours" , endScreenButtonText = "Recommencer le parcours"
, backButtonText = "Revenir en arrière" , backButtonText = "Revenir en arrière"
, proceedButtonText = "Continuer" , proceedButtonText = "Continuer"
, disableProceedButtonText = "Jouer la vidéo de nouveau" , disableProceedButtonText = "Jouer la vidéo de nouveau"
@ -986,7 +1040,7 @@ nouveauCoursePresentation =
, confirmDialogConfirmText = "Envoyer et voir les résultats" , confirmDialogConfirmText = "Envoyer et voir les résultats"
, confirmDialogHeader = "Envoyer vos réponses" , confirmDialogHeader = "Envoyer vos réponses"
, confirmDialogText = "Cette action va envoyer vos réponses, voulez-vous continuer?" , confirmDialogText = "Cette action va envoyer vos réponses, voulez-vous continuer?"
, containsCompleted = "@slideName ccontient des interactions complètes" , containsCompleted = "@slideName contient des interactions complètes"
, containsIncorrectAnswers = "@slideName contient des réponses incorrectes" , containsIncorrectAnswers = "@slideName contient des réponses incorrectes"
, containsNotCompleted = "@slideName contient des interactions incomplètes" , containsNotCompleted = "@slideName contient des interactions incomplètes"
, containsOnlyCorrect = "toutes les réponses sont bonnes sur @slideName" , containsOnlyCorrect = "toutes les réponses sont bonnes sur @slideName"
@ -1015,7 +1069,7 @@ nouveauCoursePresentation =
, showSolutions = "Voir la correction" , showSolutions = "Voir la correction"
, slide = "Diapositive" , slide = "Diapositive"
, slideCount = "Diapositive a @index de @total" , slideCount = "Diapositive a @index de @total"
, solutionModeText = "Passer en mode &quot;correction&quot;" , solutionModeText = "Passer en mode &quot;Correction&quot;"
, solutionModeTitle = "Sortir du mode &quot;Correction&quot;" , solutionModeTitle = "Sortir du mode &quot;Correction&quot;"
, solutionsButtonTitle = "Afficher les commentaires" , solutionsButtonTitle = "Afficher les commentaires"
, summary = "Résumé" , summary = "Résumé"
@ -1404,39 +1458,98 @@ h5pParser =
] ]
questionParser =
tillEndOfLine
titleParser =
tillEndOfLine
tillEndOfLine =
getChompedString <|
succeed ()
|. chompWhile ((/=) '\n')
blankLines =
succeed ()
|. chompWhile (\x -> x == ' ' || x == '\t' || x == '\n' || x == '\u{000D}')
|. (getPosition
|> andThen
(\( row, col ) ->
if col == 1 then
succeed ()
else
problem
("N'y aurait-il pas des espaces en trop au débul de la ligne "
++ String.fromInt row
)
)
)
espaces =
chompWhile <| \x -> x == ' ' || x == '\t'
{-
-}
branchingScenarioParser profondeur = branchingScenarioParser profondeur =
let let
f startScreenTitle startScreenSubtitle = f title contentList =
BranchingScenarioH5P BranchingScenarioH5P
{ nouveauBranchingScenario { nouveauBranchingScenario
| startScreen = | startScreen =
nouveauBranchingScenario.startScreen nouveauBranchingScenario.startScreen
|> withStartScreenTitle startScreenTitle |> withStartScreenSubtitle title
|> withStartScreenSubtitle startScreenSubtitle , content = [] -- TODO
} }
in in
succeed f succeed f
|. symbol (S.repeat profondeur "*") |. stars profondeur
|. espaces
|. keyword "BranchingScenario" |. keyword "BranchingScenario"
|. espaces |. espaces
|= title |= titleParser
|. token "\n" |. token "\n"
|= title |= sequence
{ start = ""
, separator = ""
, end = ""
, spaces = blankLines
, item = contentParser (profondeur + 1)
, trailing = Optional
}
|. spaces
coursePresentationParser profondeur = stars profondeur =
succeed (CoursePresentationH5P nouveauCoursePresentation) succeed ()
|. symbol (S.repeat profondeur "*") |. symbol (S.repeat profondeur "*")
|. espaces |. espaces
|. keyword "CoursePresentation"
trueFalseParser profondeur = contentParser profondeur =
succeed (TrueFalseH5P nouveauTrueFalse) oneOf
|. symbol (S.repeat profondeur "*") [ --branchingQuestionParser profondeur
|. espaces coursePresentationParser profondeur
|. keyword "TrueFalse" , trueFalseParser profondeur
]
uuid n = uuid n =
@ -1446,14 +1559,87 @@ uuid n =
|> UUID.toString |> UUID.toString
blankLine =
succeed ()
|. espaces
|. token "\n"
{-
-}
--branchingQuestionParser profondeur =
-- let
-- f question branchList =
-- case branchList of
-- [] ->
-- 0
-- in
-- succeed f
-- |. stars profondeur
-- |. keyword "BranchingQuestion"
-- |. espaces
-- |= questionParser
-- |. token "\n"
-- |= sequence
-- { start = ""
-- , separator = ""
-- , end = ""
-- , spaces = blankLines
-- , item = branchingQuestionAlternativeParser (profondeur + 1)
-- , trailing = Optional
-- }
--branchingQuestionAlternativeParser profondeur =
-- 0
{-
espaces =
chompWhile <| \x -> x == ' ' || x == '\t'
-}
coursePresentationParser profondeur =
succeed (CoursePresentationH5P nouveauCoursePresentation)
|. stars profondeur
|. keyword "CoursePresentation"
{-
-}
trueFalseParser profondeur =
succeed (TrueFalseH5P nouveauTrueFalse)
|. stars profondeur
|. keyword "TrueFalse"

Loading…
Cancel
Save