Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

generate an official version of data.json#2

Open
laowantong wants to merge 2 commits into
t4rm:master from
laowantong:master
Open

generate an official version of data.json #2
laowantong wants to merge 2 commits into
t4rm:master from
laowantong:master

Conversation

@laowantong

@laowantong laowantong commented Feb 8, 2024

Copy link
Copy Markdown

This JSON should be a drop-in replacement for yours. It was generated by the following program:

import json
descriptions = [
 (0, "Déclaration"),
 (1, "Expression primitive"),
 (2, "Fonction à un argument"),
 (3, "Expression fonctionnelle"),
 (4, "Définition locale simultanée"),
 (5, "Opérateur sous forme préfixée"),
 (6, "Fonction à plusieurs arguments"),
 (7, "Définition globale de fonction(s)"),
 (8, "Définition locale de valeur(s) primitive(s)"),
 (9, "Définition globale de valeur(s) primitive(s)"),
 (10, "Fonction appliquée à un argument"),
 (11, "Fonction appliquée à plusieurs arguments"),
]
chunks = [
 ("x+3", [1, 10, 11]),
 ("( + )", [2, 3, 5, 6]),
 ("let x = 2", [0, 9]),
 ("let x = 2 in x+3", [1, 8]),
 ("fun x y -> x+y", [2, 3, 6]),
 ("let succ x = x+1", [0, 7]),
 ("function x -> x+3", [2, 3]),
 ("let add x y = x+y", [0, 7]),
 ("let x = 2 and y = 3 in x+y", [1, 4, 8]),
 ("(fun x y -> x+y) 2 3", [1, 10, 11]),
 ("(function x -> x+3) 2", [1, 10]),
]
propositions = []
for (i, (name, answers)) in enumerate(chunks, 1):
 propositions.append({
 "id": i,
 "name": name,
 "answers": answers
 })
answers = []
for (i, value) in descriptions:
 answers.append({
 "id": i,
 "value": value
 })
result = {
 "propositions": propositions,
 "answers": answers,
}
print(json.dumps(result, ensure_ascii=False, indent=4))

The first two definitions were copy-pasted from my own program, which I use to generate the subjects and their solutions. This should ensure all associations are correct.

t4rm commented Feb 8, 2024

Copy link
Copy Markdown
Owner

Est-il plus judicieux d'adapter votre code à JS et de le mettre dans un fichier data.js duquel on exportera result qui sera directement utilisé dans notre context ?

Code adapté :

const descriptions = [
 [0, "Déclaration"],
 [1, "Expression primitive"],
 [2, "Fonction à un argument"],
 [3, "Expression fonctionnelle"],
 [4, "Définition locale simultanée"],
 [5, "Opérateur sous forme préfixée"],
 [6, "Fonction à plusieurs arguments"],
 [7, "Définition globale de fonction(s)"],
 [8, "Définition locale de valeur(s) primitive(s)"],
 [9, "Définition globale de valeur(s) primitive(s)"],
 [10, "Fonction appliquée à un argument"],
 [11, "Fonction appliquée à plusieurs arguments"]
];
const chunks = [
 ["x+3", [1, 10, 11]],
 ["( + )", [2, 3, 5, 6]],
 ["let x = 2", [0, 9]],
 ["let x = 2 in x+3", [1, 8]],
 ["fun x y -> x+y", [2, 3, 6]],
 ["let succ x = x+1", [0, 7]],
 ["function x -> x+3", [2, 3]],
 ["let add x y = x+y", [0, 7]],
 ["let x = 2 and y = 3 in x+y", [1, 4, 8]],
 ["(fun x y -> x+y) 2 3", [1, 10, 11]],
 ["(function x -> x+3) 2", [1, 10]]
];
const propositions = chunks.map(([name, answers], i) => ({
 id: i + 1,
 name,
 answers
}));
const answers = descriptions.map(([id, value]) => ({ id, value }));
export const result = {
 propositions,
 answers
};

Utilisation dans notre context :

...
import { result } from './data';
...
export const DataProvider = ({ children }) => {
 const data = result;
 return (
 <DataContext.Provider value={{ data }}>
 {children}
 </DataContext.Provider>
 );
};
...

Il n'y aurait alors plus de JSON et le fichier JS représentant les data sera lisible.

Copy link
Copy Markdown
Author

Disons que de façon générale, c'est mieux de séparer les données du code. Quand j'ai cherché les données sur lesquelles tu travaillais, je les ai trouvées facilement parce qu'elles étaient dans un fichier de données. Si elles avaient été noyées dans le code ç'aurait été plus problématique. Donc, non, utilise simplement la nouvelle version du JSON.

Après, je persiste à penser que la lisibilité de ce fichier pourrait être améliorée, mais ce n'est effectivement pas une priorité.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

AltStyle によって変換されたページ (->オリジナル) /