-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclemscript_templates.py
More file actions
144 lines (123 loc) · 5.63 KB
/
clemscript_templates.py
File metadata and controls
144 lines (123 loc) · 5.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
"""Templates et structures de code ClemScript pour la génération automatique"""
class ClemScriptTemplates:
"""Collection de templates pour générer du code ClemScript"""
def __init__(self):
self.templates = {
'variable': {
'basic': 'Clem var Script {name} = {value};',
'string': 'Clem var Script {name} = "{value}";',
'number': 'Clem var Script {name} = {value};'
},
'console': {
'simple': 'Clem console Script -> "{message}";',
'variable': 'Clem console Script -> {variable};',
'concatenation': 'Clem console Script -> "{text}" + {variable};',
'complex': 'Clem console Script -> "{text1}" + {variable} + "{text2}";'
},
'condition': {
'simple': '''Clem if Script ({condition}) Clem then Script {{
{body}
}}''',
'with_else': '''Clem if Script ({condition}) Clem then Script {{
{if_body}
}} Clem else Script {{
{else_body}
}}'''
},
'boucle': {
'for': '''Clem for Script {variable} Clem from Script {start} Clem to Script {end} Clem do Script {{
{body}
}}''',
'for_simple': '''Clem for Script i Clem from Script {start} Clem to Script {end} Clem do Script {{
Clem console Script -> "Index : " + i;
}}'''
},
'input': {
'basic': 'Clem input Script {variable} "{prompt}";',
'with_response': '''Clem input Script {variable} "{prompt}";
Clem console Script -> "Vous avez saisi : " + {variable};'''
},
'math': {
'square': 'Clem var Script {result} = Clem math Script square {value};',
'sqrt': 'Clem var Script {result} = Clem math Script sqrt {value};',
'abs': 'Clem var Script {result} = Clem math Script abs {value};'
},
'color': {
'simple': 'Clem color Script "{color}" "{message}";',
'variable': 'Clem color Script "{color}" + {variable};'
},
'quiz': {
'basic': '''Clem quiz Script "{question}"
Clem options Script "{option1}" "{option2}" "{option3}" Clem answer Script {correct_answer};''',
'simple': '''Clem quiz Script "Quelle est la capitale de la France?"
Clem options Script "Paris" "Londres" "Berlin" Clem answer Script 1;'''
},
'interaction': {
'basic': '''Clem var Script choix;
Clem input Script choix "{prompt}";
Clem interact Script choix {keywords} Clem then Script {{
{responses}
}} Clem else Script {{
Clem console Script -> "Choix non reconnu";
}}''',
'simple': '''Clem var Script choix;
Clem input Script choix "Choisissez votre destination: ";
Clem interact Script choix "forêt", "montagne" Clem then Script {{
Clem console Script -> "Vous avez choisi une aventure!";
}} Clem else Script {{
Clem console Script -> "Choix non reconnu";
}}'''
},
'random': {
'number': 'Clem random valeur Script {min} {max};',
'text': 'Clem random text Script {texts};'
},
'comment': {
'basic': '# {comment}',
'documentation': '''# {title}
# {description}'''
},
'function': {
'basic': '''Clem function Script {name} {{
{body}
}}''',
'with_param': '''Clem function Script {name} Clem param Script {param} {{
{body}
}}'''
},
'advanced_condition': {
'multiple': '''Clem if Script ({condition1} && {condition2}) Clem then Script {{
{body}
}}''',
'or_condition': '''Clem if Script ({condition1} || {condition2}) Clem then Script {{
{body}
}}'''
},
'advanced_math': {
'complex': '''Clem var Script resultat;
resultat = Clem math Script {operation} {value};
Clem console Script -> "Résultat: " + resultat;'''
}
}
# Messages d'aide et suggestions
self.help_messages = {
'variable': "Pour créer une variable, utilisez : 'Je veux une variable nom avec la valeur X'",
'console': "Pour afficher du texte, utilisez : 'Affiche le message bonjour'",
'condition': "Pour une condition, utilisez : 'Si X est plus grand que Y alors affiche Z'",
'boucle': "Pour une boucle, utilisez : 'Répète de 1 à 10' ou 'Fais une boucle'",
'input': "Pour la saisie utilisateur, utilisez : 'Demande le nom à l'utilisateur'",
'quiz': "Pour un quiz, utilisez : 'Crée un quiz sur la capitale de la France'",
'interaction': "Pour une interaction, utilisez : 'Crée une interaction avec forêt et montagne'"
}
def get_template(self, concept: str, template_type: str = 'basic') -> str:
"""Récupère un template pour un concept donné"""
if concept in self.templates:
templates = self.templates[concept]
return templates.get(template_type, templates.get('basic', ''))
return ''
def get_all_concepts(self) -> list:
"""Retourne la liste de tous les concepts disponibles"""
return list(self.templates.keys())
def get_help_message(self, concept: str) -> str:
"""Retourne un message d'aide pour un concept"""
return self.help_messages.get(concept, f"Concept '{concept}' disponible")