Closed Ofghanirre closed 1 year ago
Il semblerait qu'il y ai un autre problème, peut être à l'origine de celui ci :
Si on définit des variables dans le before, elles sont supprimées / non accessible depuis le evaluator !
J'ai définis input.automaton
depuis le before car je n'ai pas trouvé de syntaxe pour déclarer une liste d'objet directement dans une variable, et cela a peut être donc mené au problème!
Edit :
Il semblerait que ça soit les mots clés let / const qui peuvent empêcher la sauvegarde, pourquoi pas mais il manquerait cruellement une documentation / explication pour enseignant / utilisation de platon 💯 !
Sinon super travail et j'aime beaucoup l'identité du sire
Hello, merci pour la description complète du problème.
Concernant le premier point sur l'affichage des options sur des fenêtres trop petites, l'éditeur d'automate n'est initialement pas prévu pour les téléphones et tablettes mais il est effectivement possible de trouver une alternative d'affichage sur ces devices à voir donc ce que je peux faire.
Pour les erreurs des liens non sauvegardés, effectivement il faut utiliser les mots-clés let/const dans le builder/grader c'est le fonctionnement du JS qui fait cela. Une documentation est prévue mais pas dans l'immédiat, notamment sur la syntaxe du language, toute PR est la bienvenue. 🙂.
Sur le fait qu'il ait 2 syntaxes différentes, c'est la syntaxe objet qui prime dans le grader. La syntaxe string est juste un shortcut de construction et pour ton exemple.
Finalement dans ton exemple, il est normal que le résultat soit faux car tu ne peux pas comparer 2 objets de cette manière en JS le résultat sera faux et dans tous les cas les objets sont différents notamment à cause de certaines propriétés qui ne sont pas forcément exposées sur l'API publique de l'automate (position
qui permet de garder la position de l'automate après une validation). Il existe des fonctions de comparaisons mises en place durant mon alternance en pair avec Claire David sur la version premierlangage.
La syntaxe de déclaration déclaration d'objet dans le langage PL est légèrement différente du JSON, il ne faut pas mettre de guillemets sur le nom des clés. Je mettrais à jour le parser pour prendre en compte les guillemets. Une PR est la bienvenue pour cela aussi 🙂
input = :wc-automaton-editor
input.debug = true
inputSolution = :wc-automaton-editor
inputSolution.debug = true
inputSolution.automaton = {
states: [
"S2",
"S1"
],
alphabet: [
"a",
"b"
],
position: {
S1: {
x: 432,
y: 199
},
S2: {
x: 598,
y: 235
}
},
transitions: [
{
symbols: [
"a"
],
toState: "S2",
fromState: "S1"
},
{
symbols: [
"b"
],
toState: "S2",
fromState: "S2"
}
],
initialStates: [
"S1"
],
acceptingStates: [
"S2"
]
}
input.automaton = {
states: [
"S2",
"S1"
],
alphabet: [
"a",
"b"
],
position: {
S1: {
x: 432,
y: 199
},
S2: {
x: 598,
y: 235
}
},
transitions: [
{
symbols: [
"a"
],
toState: "S2",
fromState: "S1"
},
{
symbols: [
"b"
],
toState: "S2",
fromState: "S2"
}
],
initialStates: [
"S1"
],
acceptingStates: [
"S2"
]
}
grader==
grade = 0
feedback = {}
feedback.type = "error"
feedback.content = "Mauvaise réponse"
if (input.automaton === inputSolution.automaton) {
grade = 100
feedback.type = "success"
feedback.content = "Bonne réponse"
}
==
title==
Automaton editor
==
statement ==
Test Implementation
==
form==
{{input}}
==
solution==
{{inputSolution}}
==
Edit : Les variables de la sandbox node sont sauvegardés uniquement si c'est des variables globales (pas de mot clé let/const)
Hello ! J'espère que tout va bien ! J'ai un problème autour des automates avec le automaton-viewer et automaton-editor. Il semblerait qu'il y ait un problème d'affichage et de gestion des données à travers un exercice platon.
[x] L'affichage des options d'automates n'est pas réalisé si la taille de la fenêtre est trop petite, donc dans l'onglet preview de l'éditeur, les options ne s'affichent pas
[x] L'édition des automates via l'éditeur semble poser problème, en effet les liens ne semblent pas sauvegarder au cours de l'édition et donc il est impossible de comparer correctement deux automates. De plus le fait qu'il y ai 2 syntaxes différentes pour rentrer un automate semble poser problème. Il faudrait que si on rentre une string, on sort avec un objet ou inverse... Ou alors des fonctions de mapping si possible !
Exemples : J'ai cet exercice PL:
Et j'obtiens les affichages suivants:
Comme on peut le voir dans le code en théorie les 2 champs
automatons
sont identique sur input et inputSolution, et pourtant :Voilà j'espère que c'est assez clair !