ether-code 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/ether.js +1 -1
- package/generators/css-generator.js +42 -55
- package/generators/graphql-generator.js +19 -22
- package/generators/html-generator.js +51 -220
- package/generators/js-generator.js +76 -157
- package/generators/node-generator.js +49 -93
- package/generators/php-generator.js +46 -68
- package/generators/python-generator.js +35 -54
- package/generators/react-generator.js +37 -47
- package/generators/ruby-generator.js +59 -119
- package/generators/sql-generator.js +42 -63
- package/generators/ts-generator.js +59 -133
- package/i18n/i18n-css.json +147 -147
- package/i18n/i18n-graphql.json +6 -6
- package/i18n/i18n-html.json +135 -135
- package/i18n/i18n-js.json +107 -107
- package/i18n/i18n-node.json +14 -14
- package/i18n/i18n-php.json +177 -177
- package/i18n/i18n-python.json +16 -16
- package/i18n/i18n-react.json +97 -97
- package/i18n/i18n-ruby.json +22 -22
- package/i18n/i18n-sql.json +153 -153
- package/i18n/i18n-ts.json +10 -10
- package/lexer/ether-lexer.js +175 -34
- package/lexer/tokens.js +6 -6
- package/package.json +1 -1
- package/parsers/ast-css.js +0 -545
- package/parsers/ast-graphql.js +0 -424
- package/parsers/ast-html.js +0 -886
- package/parsers/ast-js.js +0 -750
- package/parsers/ast-node.js +0 -2440
- package/parsers/ast-php.js +0 -957
- package/parsers/ast-react.js +0 -580
- package/parsers/ast-ruby.js +0 -895
- package/parsers/ast-ts.js +0 -1352
- package/parsers/css-parser.js +0 -1981
- package/parsers/graphql-parser.js +0 -2011
- package/parsers/html-parser.js +0 -1182
- package/parsers/js-parser.js +0 -2564
- package/parsers/node-parser.js +0 -2644
- package/parsers/php-parser.js +0 -3037
- package/parsers/react-parser.js +0 -1035
- package/parsers/ruby-parser.js +0 -2680
- package/parsers/ts-parser.js +0 -3881
|
@@ -5,8 +5,6 @@ class PythonGenerator {
|
|
|
5
5
|
this.i18n = null
|
|
6
6
|
this.indent = 0
|
|
7
7
|
this.output = ''
|
|
8
|
-
this.keywordMap = {}
|
|
9
|
-
this.builtinMap = {}
|
|
10
8
|
|
|
11
9
|
if (i18nPath) {
|
|
12
10
|
this.loadI18n(i18nPath)
|
|
@@ -53,7 +51,7 @@ class PythonGenerator {
|
|
|
53
51
|
'pour': 'for',
|
|
54
52
|
'dans': 'in',
|
|
55
53
|
'tant que': 'while',
|
|
56
|
-
'
|
|
54
|
+
'definir': 'def',
|
|
57
55
|
'fonction': 'def',
|
|
58
56
|
'classe': 'class',
|
|
59
57
|
'retourner': 'return',
|
|
@@ -82,7 +80,7 @@ class PythonGenerator {
|
|
|
82
80
|
'aucun': 'None',
|
|
83
81
|
'soi': 'self',
|
|
84
82
|
'cls': 'cls',
|
|
85
|
-
'asynchrone': '
|
|
83
|
+
'asynchrone': 'async',
|
|
86
84
|
'attendre': 'await',
|
|
87
85
|
'afficher': 'print',
|
|
88
86
|
'saisir': 'input',
|
|
@@ -104,8 +102,8 @@ class PythonGenerator {
|
|
|
104
102
|
'arrondir': 'round',
|
|
105
103
|
'entier': 'int',
|
|
106
104
|
'flottant': 'float',
|
|
107
|
-
'
|
|
108
|
-
'
|
|
105
|
+
'chaine': 'str',
|
|
106
|
+
'booleen': 'bool',
|
|
109
107
|
'liste': 'list',
|
|
110
108
|
'tuple': 'tuple',
|
|
111
109
|
'ensemble': 'set',
|
|
@@ -114,12 +112,12 @@ class PythonGenerator {
|
|
|
114
112
|
'ouvrir': 'open',
|
|
115
113
|
'fermer': 'close',
|
|
116
114
|
'lire': 'read',
|
|
117
|
-
'
|
|
115
|
+
'ecrire': 'write',
|
|
118
116
|
'ligne': 'readline',
|
|
119
117
|
'lignes': 'readlines',
|
|
120
118
|
'ajouter': 'append',
|
|
121
119
|
'etendre': 'extend',
|
|
122
|
-
'
|
|
120
|
+
'inserer': 'insert',
|
|
123
121
|
'retirer': 'remove',
|
|
124
122
|
'extraire': 'pop',
|
|
125
123
|
'vider': 'clear',
|
|
@@ -146,11 +144,11 @@ class PythonGenerator {
|
|
|
146
144
|
'est alphanumerique': 'isalnum',
|
|
147
145
|
'est espace': 'isspace',
|
|
148
146
|
'formater': 'format',
|
|
149
|
-
'
|
|
147
|
+
'cles': 'keys',
|
|
150
148
|
'valeurs': 'values',
|
|
151
|
-
'
|
|
149
|
+
'elements': 'items',
|
|
152
150
|
'obtenir': 'get',
|
|
153
|
-
'
|
|
151
|
+
'definir defaut': 'setdefault',
|
|
154
152
|
'mettre a jour': 'update',
|
|
155
153
|
'union': 'union',
|
|
156
154
|
'intersection': 'intersection',
|
|
@@ -160,25 +158,25 @@ class PythonGenerator {
|
|
|
160
158
|
'exception': 'Exception',
|
|
161
159
|
'erreur valeur': 'ValueError',
|
|
162
160
|
'erreur type': 'TypeError',
|
|
163
|
-
'erreur
|
|
161
|
+
'erreur cle': 'KeyError',
|
|
164
162
|
'erreur index': 'IndexError',
|
|
165
163
|
'erreur attribut': 'AttributeError',
|
|
166
164
|
'erreur fichier': 'FileNotFoundError',
|
|
167
165
|
'erreur zero': 'ZeroDivisionError',
|
|
168
166
|
'decorateur': '@',
|
|
169
|
-
'
|
|
170
|
-
'
|
|
171
|
-
'
|
|
167
|
+
'propriete': 'property',
|
|
168
|
+
'methode statique': 'staticmethod',
|
|
169
|
+
'methode classe': 'classmethod',
|
|
172
170
|
'super': 'super',
|
|
173
171
|
'init': '__init__',
|
|
174
172
|
'constructeur': '__init__',
|
|
175
173
|
'representer': '__repr__',
|
|
176
|
-
'
|
|
174
|
+
'chaine dunder': '__str__',
|
|
177
175
|
'iterateur': '__iter__',
|
|
178
176
|
'suivant': '__next__',
|
|
179
177
|
'longueur dunder': '__len__',
|
|
180
178
|
'obtenir item': '__getitem__',
|
|
181
|
-
'
|
|
179
|
+
'definir item': '__setitem__',
|
|
182
180
|
'supprimer item': '__delitem__',
|
|
183
181
|
'contient': '__contains__',
|
|
184
182
|
'appeler': '__call__',
|
|
@@ -196,22 +194,13 @@ class PythonGenerator {
|
|
|
196
194
|
|
|
197
195
|
if (Array.isArray(ast)) {
|
|
198
196
|
for (const node of ast) {
|
|
199
|
-
|
|
200
|
-
if (result !== undefined && result !== '' && this.output === '') {
|
|
201
|
-
return result
|
|
202
|
-
}
|
|
197
|
+
this.generateNode(node)
|
|
203
198
|
}
|
|
204
199
|
} else if (ast && ast.type) {
|
|
205
|
-
|
|
206
|
-
if (result !== undefined && result !== '' && this.output === '') {
|
|
207
|
-
return result
|
|
208
|
-
}
|
|
200
|
+
this.generateNode(ast)
|
|
209
201
|
} else if (ast && ast.body) {
|
|
210
202
|
for (const node of ast.body) {
|
|
211
|
-
|
|
212
|
-
if (result !== undefined && result !== '' && this.output === '') {
|
|
213
|
-
return result
|
|
214
|
-
}
|
|
203
|
+
this.generateNode(node)
|
|
215
204
|
}
|
|
216
205
|
}
|
|
217
206
|
|
|
@@ -222,6 +211,13 @@ class PythonGenerator {
|
|
|
222
211
|
if (!node) return ''
|
|
223
212
|
|
|
224
213
|
switch (node.type) {
|
|
214
|
+
case 'Program':
|
|
215
|
+
if (node.body) {
|
|
216
|
+
for (const child of node.body) {
|
|
217
|
+
this.generateNode(child)
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return
|
|
225
221
|
case 'Module':
|
|
226
222
|
return this.generateModule(node)
|
|
227
223
|
case 'ImportStatement':
|
|
@@ -268,6 +264,8 @@ class PythonGenerator {
|
|
|
268
264
|
case 'AssignmentStatement':
|
|
269
265
|
case 'AssignmentExpression':
|
|
270
266
|
return this.generateAssignment(node)
|
|
267
|
+
case 'VariableDeclaration':
|
|
268
|
+
return this.generateVariableDeclaration(node)
|
|
271
269
|
case 'AugmentedAssignment':
|
|
272
270
|
return this.generateAugmentedAssignment(node)
|
|
273
271
|
case 'Decorator':
|
|
@@ -466,16 +464,7 @@ class PythonGenerator {
|
|
|
466
464
|
}
|
|
467
465
|
|
|
468
466
|
generateDecorator(node) {
|
|
469
|
-
|
|
470
|
-
if (typeof node === 'string') {
|
|
471
|
-
name = node
|
|
472
|
-
} else if (typeof node.name === 'string') {
|
|
473
|
-
name = this.translate(node.name)
|
|
474
|
-
} else if (node.name?.name) {
|
|
475
|
-
name = this.translate(node.name.name)
|
|
476
|
-
} else {
|
|
477
|
-
name = this.generateNode(node)
|
|
478
|
-
}
|
|
467
|
+
const name = typeof node === 'string' ? node : this.generateNode(node.name || node)
|
|
479
468
|
const args = node.arguments ?
|
|
480
469
|
'(' + node.arguments.map(a => this.generateNode(a)).join(', ') + ')' : ''
|
|
481
470
|
this.writeLine(`@${name}${args}`)
|
|
@@ -507,18 +496,7 @@ class PythonGenerator {
|
|
|
507
496
|
}
|
|
508
497
|
this.indent--
|
|
509
498
|
if (elif.alternate || elif.orelse) {
|
|
510
|
-
|
|
511
|
-
if (nextAlt.type === 'IfStatement') {
|
|
512
|
-
this.generateIf({ ...nextAlt, isElif: true })
|
|
513
|
-
} else {
|
|
514
|
-
this.writeLine('else:')
|
|
515
|
-
this.indent++
|
|
516
|
-
const nextBody = Array.isArray(nextAlt) ? nextAlt : [nextAlt]
|
|
517
|
-
for (const stmt of nextBody) {
|
|
518
|
-
this.generateNode(stmt)
|
|
519
|
-
}
|
|
520
|
-
this.indent--
|
|
521
|
-
}
|
|
499
|
+
this.generateNode({ type: 'IfStatement', alternate: elif.alternate || elif.orelse })
|
|
522
500
|
}
|
|
523
501
|
} else {
|
|
524
502
|
this.writeLine('else:')
|
|
@@ -695,6 +673,12 @@ class PythonGenerator {
|
|
|
695
673
|
this.writeLine(`${targets.join(' = ')} = ${value}`)
|
|
696
674
|
}
|
|
697
675
|
|
|
676
|
+
generateVariableDeclaration(node) {
|
|
677
|
+
const name = node.name || (node.id && node.id.name) || 'var'
|
|
678
|
+
const value = node.init ? this.generateNode(node.init) : 'None'
|
|
679
|
+
this.writeLine(`${name} = ${value}`)
|
|
680
|
+
}
|
|
681
|
+
|
|
698
682
|
generateAugmentedAssignment(node) {
|
|
699
683
|
const target = this.generateNode(node.target)
|
|
700
684
|
const value = this.generateNode(node.value)
|
|
@@ -722,9 +706,6 @@ class PythonGenerator {
|
|
|
722
706
|
generateUnary(node) {
|
|
723
707
|
const operand = this.generateNode(node.operand || node.argument)
|
|
724
708
|
const op = this.translateOperator(node.op || node.operator)
|
|
725
|
-
if (op === 'not') {
|
|
726
|
-
return `not ${operand}`
|
|
727
|
-
}
|
|
728
709
|
return `${op}${operand}`
|
|
729
710
|
}
|
|
730
711
|
|
|
@@ -34,30 +34,31 @@ class ReactGenerator extends JSGenerator {
|
|
|
34
34
|
|
|
35
35
|
buildReactMaps() {
|
|
36
36
|
this.hookMap = {
|
|
37
|
-
'
|
|
38
|
-
'utiliser
|
|
37
|
+
'etat': 'useState',
|
|
38
|
+
'utiliser etat': 'useState',
|
|
39
39
|
'effet': 'useEffect',
|
|
40
40
|
'utiliser effet': 'useEffect',
|
|
41
41
|
'contexte': 'useContext',
|
|
42
42
|
'utiliser contexte': 'useContext',
|
|
43
|
-
'
|
|
44
|
-
'utiliser
|
|
43
|
+
'reducteur': 'useReducer',
|
|
44
|
+
'utiliser reducteur': 'useReducer',
|
|
45
45
|
'rappel': 'useCallback',
|
|
46
46
|
'utiliser rappel': 'useCallback',
|
|
47
|
-
'
|
|
48
|
-
'utiliser
|
|
49
|
-
'
|
|
50
|
-
'utiliser
|
|
47
|
+
'memo': 'useMemo',
|
|
48
|
+
'utiliser memo': 'useMemo',
|
|
49
|
+
'reference': 'useRef',
|
|
50
|
+
'utiliser reference': 'useRef',
|
|
51
51
|
'effet mise en page': 'useLayoutEffect',
|
|
52
52
|
'utiliser effet mise en page': 'useLayoutEffect',
|
|
53
53
|
'valeur imperative': 'useImperativeHandle',
|
|
54
54
|
'debug': 'useDebugValue',
|
|
55
55
|
'utiliser debug': 'useDebugValue',
|
|
56
|
+
'id': 'useId',
|
|
56
57
|
'utiliser id': 'useId',
|
|
57
58
|
'transition': 'useTransition',
|
|
58
59
|
'utiliser transition': 'useTransition',
|
|
59
|
-
'valeur
|
|
60
|
-
'utiliser valeur
|
|
60
|
+
'valeur differee': 'useDeferredValue',
|
|
61
|
+
'utiliser valeur differee': 'useDeferredValue',
|
|
61
62
|
'effet insertion': 'useInsertionEffect',
|
|
62
63
|
'valeur sync externe': 'useSyncExternalStore'
|
|
63
64
|
}
|
|
@@ -73,16 +74,16 @@ class ReactGenerator extends JSGenerator {
|
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
this.apiMap = {
|
|
76
|
-
'
|
|
77
|
-
'cloner
|
|
78
|
-
'est
|
|
77
|
+
'creer element': 'createElement',
|
|
78
|
+
'cloner element': 'cloneElement',
|
|
79
|
+
'est element valide': 'isValidElement',
|
|
79
80
|
'enfants': 'Children',
|
|
80
|
-
'
|
|
81
|
+
'creer ref': 'createRef',
|
|
81
82
|
'transferer ref': 'forwardRef',
|
|
82
|
-
'memoriser': '
|
|
83
|
+
'memoriser': 'memo',
|
|
83
84
|
'paresseux': 'lazy',
|
|
84
|
-
'
|
|
85
|
-
'
|
|
85
|
+
'creer contexte': 'createContext',
|
|
86
|
+
'creer portail': 'createPortal'
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
|
|
@@ -101,22 +102,13 @@ class ReactGenerator extends JSGenerator {
|
|
|
101
102
|
|
|
102
103
|
if (Array.isArray(ast)) {
|
|
103
104
|
for (const node of ast) {
|
|
104
|
-
|
|
105
|
-
if (result !== undefined && result !== '' && this.output === '') {
|
|
106
|
-
return result
|
|
107
|
-
}
|
|
105
|
+
this.generateNode(node)
|
|
108
106
|
}
|
|
109
107
|
} else if (ast && ast.type) {
|
|
110
|
-
|
|
111
|
-
if (result !== undefined && result !== '' && this.output === '') {
|
|
112
|
-
return result
|
|
113
|
-
}
|
|
108
|
+
this.generateNode(ast)
|
|
114
109
|
} else if (ast && ast.body) {
|
|
115
110
|
for (const node of ast.body) {
|
|
116
|
-
|
|
117
|
-
if (result !== undefined && result !== '' && this.output === '') {
|
|
118
|
-
return result
|
|
119
|
-
}
|
|
111
|
+
this.generateNode(node)
|
|
120
112
|
}
|
|
121
113
|
}
|
|
122
114
|
|
|
@@ -326,26 +318,25 @@ class ReactGenerator extends JSGenerator {
|
|
|
326
318
|
'formulaire': 'form',
|
|
327
319
|
'champ': 'input',
|
|
328
320
|
'zone texte': 'textarea',
|
|
329
|
-
'étiquette': 'label',
|
|
330
321
|
'etiquette': 'label',
|
|
331
|
-
'
|
|
322
|
+
'selection': 'select',
|
|
332
323
|
'option': 'option',
|
|
333
324
|
'liste': 'ul',
|
|
334
|
-
'liste
|
|
335
|
-
'
|
|
325
|
+
'liste ordonnee': 'ol',
|
|
326
|
+
'element liste': 'li',
|
|
336
327
|
'tableau': 'table',
|
|
337
328
|
'ligne': 'tr',
|
|
338
329
|
'cellule': 'td',
|
|
339
|
-
'
|
|
330
|
+
'entete cellule': 'th',
|
|
340
331
|
'corps tableau': 'tbody',
|
|
341
|
-
'
|
|
332
|
+
'entete tableau': 'thead',
|
|
342
333
|
'pied tableau': 'tfoot',
|
|
343
|
-
'
|
|
334
|
+
'entete': 'header',
|
|
344
335
|
'piedpage': 'footer',
|
|
345
336
|
'navigation': 'nav',
|
|
346
337
|
'section': 'section',
|
|
347
338
|
'article': 'article',
|
|
348
|
-
'
|
|
339
|
+
'cote': 'aside',
|
|
349
340
|
'principal': 'main',
|
|
350
341
|
'video': 'video',
|
|
351
342
|
'audio': 'audio',
|
|
@@ -377,7 +368,7 @@ class ReactGenerator extends JSGenerator {
|
|
|
377
368
|
'a la soumission': 'onSubmit',
|
|
378
369
|
'au survol': 'onMouseOver',
|
|
379
370
|
'au survol fin': 'onMouseOut',
|
|
380
|
-
'souris
|
|
371
|
+
'souris entree': 'onMouseEnter',
|
|
381
372
|
'souris sortie': 'onMouseLeave',
|
|
382
373
|
'souris bas': 'onMouseDown',
|
|
383
374
|
'souris haut': 'onMouseUp',
|
|
@@ -388,20 +379,20 @@ class ReactGenerator extends JSGenerator {
|
|
|
388
379
|
'touche presse': 'onKeyPress',
|
|
389
380
|
'au chargement': 'onLoad',
|
|
390
381
|
'erreur': 'onError',
|
|
391
|
-
'au
|
|
392
|
-
'toucher
|
|
382
|
+
'au defilement': 'onScroll',
|
|
383
|
+
'toucher debut': 'onTouchStart',
|
|
393
384
|
'toucher mouvement': 'onTouchMove',
|
|
394
385
|
'toucher fin': 'onTouchEnd',
|
|
395
|
-
'glisser
|
|
386
|
+
'glisser debut': 'onDragStart',
|
|
396
387
|
'glisser': 'onDrag',
|
|
397
388
|
'glisser fin': 'onDragEnd',
|
|
398
389
|
'deposer': 'onDrop',
|
|
399
390
|
'copier': 'onCopy',
|
|
400
391
|
'coller': 'onPaste',
|
|
401
392
|
'valeur': 'value',
|
|
402
|
-
'valeur
|
|
393
|
+
'valeur defaut': 'defaultValue',
|
|
403
394
|
'coche': 'checked',
|
|
404
|
-
'
|
|
395
|
+
'coche defaut': 'defaultChecked',
|
|
405
396
|
'desactive': 'disabled',
|
|
406
397
|
'lecture seule': 'readOnly',
|
|
407
398
|
'requis': 'required',
|
|
@@ -410,8 +401,8 @@ class ReactGenerator extends JSGenerator {
|
|
|
410
401
|
'type': 'type',
|
|
411
402
|
'nom': 'name',
|
|
412
403
|
'identifiant': 'id',
|
|
413
|
-
'
|
|
414
|
-
'
|
|
404
|
+
'reference': 'ref',
|
|
405
|
+
'cle': 'key',
|
|
415
406
|
'enfants': 'children',
|
|
416
407
|
'html interne': 'dangerouslySetInnerHTML',
|
|
417
408
|
'tabindex': 'tabIndex',
|
|
@@ -422,11 +413,10 @@ class ReactGenerator extends JSGenerator {
|
|
|
422
413
|
'adresse': 'href',
|
|
423
414
|
'cible': 'target',
|
|
424
415
|
'role': 'role',
|
|
425
|
-
'aria étiquette': 'aria-label',
|
|
426
416
|
'aria etiquette': 'aria-label',
|
|
427
417
|
'aria decrit par': 'aria-describedby',
|
|
428
418
|
'aria cache': 'aria-hidden',
|
|
429
|
-
'aria
|
|
419
|
+
'aria etendu': 'aria-expanded',
|
|
430
420
|
'aria selectionne': 'aria-selected',
|
|
431
421
|
'aria desactive': 'aria-disabled'
|
|
432
422
|
}
|