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
package/cli/ether.js
CHANGED
|
@@ -5,11 +5,6 @@ class CSSGenerator {
|
|
|
5
5
|
this.i18n = null
|
|
6
6
|
this.indent = 0
|
|
7
7
|
this.output = ''
|
|
8
|
-
this.propertyMap = {}
|
|
9
|
-
this.valueMap = {}
|
|
10
|
-
this.unitMap = {}
|
|
11
|
-
this.colorMap = {}
|
|
12
|
-
this.selectorMap = {}
|
|
13
8
|
|
|
14
9
|
if (i18nPath) {
|
|
15
10
|
this.loadI18n(i18nPath)
|
|
@@ -127,27 +122,7 @@ class CSSGenerator {
|
|
|
127
122
|
return mapped
|
|
128
123
|
}
|
|
129
124
|
|
|
130
|
-
|
|
131
|
-
result = this.translateColorsInValue(result)
|
|
132
|
-
return result
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
translateColorsInValue(val) {
|
|
136
|
-
if (typeof val !== 'string') return val
|
|
137
|
-
|
|
138
|
-
const colorMap = {
|
|
139
|
-
'blanc': 'white', 'noir': 'black', 'rouge': 'red', 'vert': 'green',
|
|
140
|
-
'bleu': 'blue', 'jaune': 'yellow', 'orange': 'orange', 'violet': 'purple',
|
|
141
|
-
'rose': 'pink', 'gris': 'gray', 'cyan': 'cyan', 'magenta': 'magenta',
|
|
142
|
-
'marron': 'brown', 'beige': 'beige', 'or': 'gold', 'argent': 'silver'
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
let result = val
|
|
146
|
-
for (const [fr, en] of Object.entries(colorMap)) {
|
|
147
|
-
const regex = new RegExp(`\\b${fr}\\b`, 'gi')
|
|
148
|
-
result = result.replace(regex, en)
|
|
149
|
-
}
|
|
150
|
-
return result
|
|
125
|
+
return this.translateGeneric(val)
|
|
151
126
|
}
|
|
152
127
|
|
|
153
128
|
translateGeneric(text) {
|
|
@@ -160,8 +135,7 @@ class CSSGenerator {
|
|
|
160
135
|
'style': 'font-style',
|
|
161
136
|
'alignement': 'text-align',
|
|
162
137
|
'decoration': 'text-decoration',
|
|
163
|
-
'transformation
|
|
164
|
-
'transformation': 'transform',
|
|
138
|
+
'transformation': 'text-transform',
|
|
165
139
|
'debordement': 'overflow',
|
|
166
140
|
'largeur': 'width',
|
|
167
141
|
'hauteur': 'height',
|
|
@@ -184,7 +158,6 @@ class CSSGenerator {
|
|
|
184
158
|
'animation': 'animation',
|
|
185
159
|
'filtre': 'filter',
|
|
186
160
|
'ajustement': 'object-fit',
|
|
187
|
-
'selection utilisateur': 'user-select',
|
|
188
161
|
'selection': 'user-select',
|
|
189
162
|
'redimensionner': 'resize',
|
|
190
163
|
'visibilite': 'visibility',
|
|
@@ -210,7 +183,7 @@ class CSSGenerator {
|
|
|
210
183
|
'rose': 'pink',
|
|
211
184
|
'gris': 'gray',
|
|
212
185
|
'transparent': 'transparent',
|
|
213
|
-
'
|
|
186
|
+
'heriter': 'inherit',
|
|
214
187
|
'initial': 'initial',
|
|
215
188
|
'aucun': 'none',
|
|
216
189
|
'auto': 'auto',
|
|
@@ -223,7 +196,7 @@ class CSSGenerator {
|
|
|
223
196
|
'statique': 'static',
|
|
224
197
|
'collant': 'sticky',
|
|
225
198
|
'centre': 'center',
|
|
226
|
-
'
|
|
199
|
+
'debut': 'flex-start',
|
|
227
200
|
'fin': 'flex-end',
|
|
228
201
|
'entre': 'space-between',
|
|
229
202
|
'autour': 'space-around',
|
|
@@ -259,32 +232,32 @@ class CSSGenerator {
|
|
|
259
232
|
}
|
|
260
233
|
|
|
261
234
|
translateSelector(selector) {
|
|
262
|
-
if (!selector) return selector
|
|
263
235
|
let result = selector
|
|
264
236
|
|
|
265
|
-
result = result.replace(
|
|
266
|
-
result = result.replace(
|
|
267
|
-
result = result.replace(
|
|
268
|
-
result = result.replace(
|
|
269
|
-
result = result.replace(
|
|
270
|
-
result = result.replace(
|
|
271
|
-
result = result.replace(
|
|
272
|
-
result = result.replace(
|
|
273
|
-
result = result.replace(
|
|
274
|
-
result = result.replace(
|
|
275
|
-
result = result.replace(
|
|
276
|
-
result = result.replace(
|
|
277
|
-
result = result.replace(
|
|
278
|
-
result = result.replace(
|
|
279
|
-
result = result.replace(
|
|
280
|
-
result = result.replace(
|
|
281
|
-
result = result.replace(
|
|
282
|
-
result = result.replace(
|
|
283
|
-
result = result.replace(
|
|
284
|
-
result = result.replace(
|
|
285
|
-
result = result.replace(
|
|
286
|
-
result = result.replace(
|
|
287
|
-
result = result.replace(
|
|
237
|
+
result = result.replace(/au survol/gi, ':hover')
|
|
238
|
+
result = result.replace(/au clic/gi, ':active')
|
|
239
|
+
result = result.replace(/au focus/gi, ':focus')
|
|
240
|
+
result = result.replace(/au focus dans/gi, ':focus-within')
|
|
241
|
+
result = result.replace(/visite/gi, ':visited')
|
|
242
|
+
result = result.replace(/premier enfant/gi, ':first-child')
|
|
243
|
+
result = result.replace(/dernier enfant/gi, ':last-child')
|
|
244
|
+
result = result.replace(/enfant impair/gi, ':nth-child(odd)')
|
|
245
|
+
result = result.replace(/enfant pair/gi, ':nth-child(even)')
|
|
246
|
+
result = result.replace(/avant/gi, '::before')
|
|
247
|
+
result = result.replace(/apres/gi, '::after')
|
|
248
|
+
result = result.replace(/selection/gi, '::selection')
|
|
249
|
+
result = result.replace(/placeholder/gi, '::placeholder')
|
|
250
|
+
result = result.replace(/premiere lettre/gi, '::first-letter')
|
|
251
|
+
result = result.replace(/premiere ligne/gi, '::first-line')
|
|
252
|
+
result = result.replace(/coche/gi, ':checked')
|
|
253
|
+
result = result.replace(/desactive/gi, ':disabled')
|
|
254
|
+
result = result.replace(/active/gi, ':enabled')
|
|
255
|
+
result = result.replace(/requis/gi, ':required')
|
|
256
|
+
result = result.replace(/optionnel/gi, ':optional')
|
|
257
|
+
result = result.replace(/valide/gi, ':valid')
|
|
258
|
+
result = result.replace(/invalide/gi, ':invalid')
|
|
259
|
+
result = result.replace(/vide/gi, ':empty')
|
|
260
|
+
result = result.replace(/racine/gi, ':root')
|
|
288
261
|
|
|
289
262
|
return result
|
|
290
263
|
}
|
|
@@ -345,6 +318,14 @@ class CSSGenerator {
|
|
|
345
318
|
if (!node) return
|
|
346
319
|
|
|
347
320
|
switch (node.type) {
|
|
321
|
+
case 'StyleSheet':
|
|
322
|
+
case 'stylesheet':
|
|
323
|
+
if (node.rules) {
|
|
324
|
+
for (const rule of node.rules) {
|
|
325
|
+
this.generateNode(rule)
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
break
|
|
348
329
|
case 'Rule':
|
|
349
330
|
case 'rule':
|
|
350
331
|
this.generateRule(node)
|
|
@@ -400,6 +381,12 @@ class CSSGenerator {
|
|
|
400
381
|
this.indent--
|
|
401
382
|
this.writeLine('}')
|
|
402
383
|
this.writeLine('')
|
|
384
|
+
|
|
385
|
+
if (node.nestedRules) {
|
|
386
|
+
for (const nested of node.nestedRules) {
|
|
387
|
+
this.generateNode(nested)
|
|
388
|
+
}
|
|
389
|
+
}
|
|
403
390
|
}
|
|
404
391
|
|
|
405
392
|
generateDeclaration(decl) {
|
|
@@ -5,9 +5,6 @@ class GraphQLGenerator {
|
|
|
5
5
|
this.i18n = null
|
|
6
6
|
this.indent = 0
|
|
7
7
|
this.output = ''
|
|
8
|
-
this.keywordMap = {}
|
|
9
|
-
this.typeMap = {}
|
|
10
|
-
this.directiveMap = {}
|
|
11
8
|
|
|
12
9
|
if (i18nPath) {
|
|
13
10
|
this.loadI18n(i18nPath)
|
|
@@ -50,45 +47,45 @@ class GraphQLGenerator {
|
|
|
50
47
|
translateGeneric(word) {
|
|
51
48
|
const translations = {
|
|
52
49
|
'type': 'type',
|
|
53
|
-
'
|
|
50
|
+
'requete': 'Query',
|
|
54
51
|
'mutation': 'Mutation',
|
|
55
52
|
'abonnement': 'Subscription',
|
|
56
53
|
'schema': 'schema',
|
|
57
54
|
'interface': 'interface',
|
|
58
55
|
'union': 'union',
|
|
59
56
|
'enum': 'enum',
|
|
60
|
-
'
|
|
61
|
-
'
|
|
57
|
+
'enumeration': 'enum',
|
|
58
|
+
'entree': 'input',
|
|
62
59
|
'scalaire': 'scalar',
|
|
63
|
-
'
|
|
64
|
-
'
|
|
60
|
+
'etend': 'extend',
|
|
61
|
+
'implemente': 'implements',
|
|
65
62
|
'fragment': 'fragment',
|
|
66
63
|
'sur': 'on',
|
|
67
64
|
'directive': 'directive',
|
|
68
|
-
'
|
|
69
|
-
'
|
|
65
|
+
'repeter': '@repeatable',
|
|
66
|
+
'chaine': 'String',
|
|
70
67
|
'entier': 'Int',
|
|
71
68
|
'flottant': 'Float',
|
|
72
|
-
'
|
|
69
|
+
'booleen': 'Boolean',
|
|
73
70
|
'identifiant': 'ID',
|
|
74
71
|
'date': 'Date',
|
|
75
72
|
'datetime': 'DateTime',
|
|
76
73
|
'json': 'JSON',
|
|
77
74
|
'url': 'URL',
|
|
78
|
-
'
|
|
75
|
+
'email': 'Email',
|
|
79
76
|
'vrai': 'true',
|
|
80
77
|
'faux': 'false',
|
|
81
78
|
'nul': 'null',
|
|
82
79
|
'non nul': '!',
|
|
83
80
|
'liste': '[]',
|
|
84
|
-
'
|
|
81
|
+
'deprecie': '@deprecated',
|
|
85
82
|
'ignorer': '@skip',
|
|
86
83
|
'inclure': '@include',
|
|
87
84
|
'si': 'if',
|
|
88
85
|
'raison': 'reason',
|
|
89
86
|
'requiert': '@requires',
|
|
90
87
|
'fournit': '@provides',
|
|
91
|
-
'
|
|
88
|
+
'cle': '@key',
|
|
92
89
|
'externe': '@external',
|
|
93
90
|
'champs': 'fields'
|
|
94
91
|
}
|
|
@@ -101,28 +98,28 @@ class GraphQLGenerator {
|
|
|
101
98
|
if (!type) return ''
|
|
102
99
|
|
|
103
100
|
const types = {
|
|
104
|
-
'
|
|
101
|
+
'chaine': 'String',
|
|
105
102
|
'entier': 'Int',
|
|
106
103
|
'flottant': 'Float',
|
|
107
|
-
'
|
|
104
|
+
'booleen': 'Boolean',
|
|
108
105
|
'identifiant': 'ID',
|
|
109
106
|
'date': 'Date',
|
|
110
107
|
'datetime': 'DateTime',
|
|
111
108
|
'heure': 'Time',
|
|
112
109
|
'json': 'JSON',
|
|
113
110
|
'url': 'URL',
|
|
114
|
-
'
|
|
111
|
+
'email': 'Email',
|
|
115
112
|
'telephone': 'Phone',
|
|
116
113
|
'uuid': 'UUID',
|
|
117
114
|
'grand entier': 'BigInt',
|
|
118
115
|
'decimal': 'Decimal',
|
|
119
116
|
'positif entier': 'PositiveInt',
|
|
120
|
-
'
|
|
121
|
-
'non
|
|
117
|
+
'negatif entier': 'NegativeInt',
|
|
118
|
+
'non negatif entier': 'NonNegativeInt',
|
|
122
119
|
'non positif entier': 'NonPositiveInt',
|
|
123
120
|
'positif flottant': 'PositiveFloat',
|
|
124
|
-
'
|
|
125
|
-
'non vide
|
|
121
|
+
'negatif flottant': 'NegativeFloat',
|
|
122
|
+
'non vide chaine': 'NonEmptyString',
|
|
126
123
|
'upload': 'Upload',
|
|
127
124
|
'vide': 'Void'
|
|
128
125
|
}
|
|
@@ -659,7 +656,7 @@ class GraphQLGenerator {
|
|
|
659
656
|
}
|
|
660
657
|
|
|
661
658
|
generateVariableDefinition(variable) {
|
|
662
|
-
const name = variable.variable?.name?.value || variable.
|
|
659
|
+
const name = variable.variable?.name?.value || variable.name
|
|
663
660
|
const type = this.generateType(variable.type)
|
|
664
661
|
const defaultValue = variable.defaultValue
|
|
665
662
|
const directives = variable.directives || []
|