ether-code 0.1.5 → 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.
Files changed (44) hide show
  1. package/cli/ether.js +1 -1
  2. package/generators/css-generator.js +42 -55
  3. package/generators/graphql-generator.js +19 -22
  4. package/generators/html-generator.js +51 -182
  5. package/generators/js-generator.js +76 -157
  6. package/generators/node-generator.js +49 -93
  7. package/generators/php-generator.js +46 -68
  8. package/generators/python-generator.js +35 -54
  9. package/generators/react-generator.js +37 -47
  10. package/generators/ruby-generator.js +59 -119
  11. package/generators/sql-generator.js +42 -63
  12. package/generators/ts-generator.js +59 -133
  13. package/i18n/i18n-css.json +147 -147
  14. package/i18n/i18n-graphql.json +6 -6
  15. package/i18n/i18n-html.json +135 -135
  16. package/i18n/i18n-js.json +107 -107
  17. package/i18n/i18n-node.json +14 -14
  18. package/i18n/i18n-php.json +177 -177
  19. package/i18n/i18n-python.json +16 -16
  20. package/i18n/i18n-react.json +97 -97
  21. package/i18n/i18n-ruby.json +22 -22
  22. package/i18n/i18n-sql.json +153 -153
  23. package/i18n/i18n-ts.json +10 -10
  24. package/lexer/ether-lexer.js +175 -34
  25. package/lexer/tokens.js +6 -6
  26. package/package.json +1 -1
  27. package/parsers/ast-css.js +0 -545
  28. package/parsers/ast-graphql.js +0 -424
  29. package/parsers/ast-html.js +0 -886
  30. package/parsers/ast-js.js +0 -750
  31. package/parsers/ast-node.js +0 -2440
  32. package/parsers/ast-php.js +0 -957
  33. package/parsers/ast-react.js +0 -580
  34. package/parsers/ast-ruby.js +0 -895
  35. package/parsers/ast-ts.js +0 -1352
  36. package/parsers/css-parser.js +0 -1981
  37. package/parsers/graphql-parser.js +0 -2011
  38. package/parsers/html-parser.js +0 -1182
  39. package/parsers/js-parser.js +0 -2564
  40. package/parsers/node-parser.js +0 -2644
  41. package/parsers/php-parser.js +0 -3037
  42. package/parsers/react-parser.js +0 -1035
  43. package/parsers/ruby-parser.js +0 -2680
  44. package/parsers/ts-parser.js +0 -3881
package/cli/ether.js CHANGED
@@ -6,7 +6,7 @@ const http = require('http')
6
6
  const { EtherCompiler } = require('./compiler')
7
7
  const { Watcher } = require('./watcher')
8
8
 
9
- const VERSION = '0.1.5'
9
+ const VERSION = '0.1.7'
10
10
 
11
11
  const COLORS = {
12
12
  reset: '\x1b[0m',
@@ -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
- let result = this.translateGeneric(val)
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 texte': 'text-transform',
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
- 'hériter': 'inherit',
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
- 'début': 'flex-start',
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(/\s+au survol/gi, ':hover')
266
- result = result.replace(/\s+au clic/gi, ':active')
267
- result = result.replace(/\s+au focus/gi, ':focus')
268
- result = result.replace(/\s+au focus dans/gi, ':focus-within')
269
- result = result.replace(/\s+visite/gi, ':visited')
270
- result = result.replace(/\s+premier enfant/gi, ':first-child')
271
- result = result.replace(/\s+dernier enfant/gi, ':last-child')
272
- result = result.replace(/\s+enfant impair/gi, ':nth-child(odd)')
273
- result = result.replace(/\s+enfant pair/gi, ':nth-child(even)')
274
- result = result.replace(/\s+avant/gi, '::before')
275
- result = result.replace(/\s+apres/gi, '::after')
276
- result = result.replace(/\s+selection/gi, '::selection')
277
- result = result.replace(/\s+placeholder/gi, '::placeholder')
278
- result = result.replace(/\s+premiere lettre/gi, '::first-letter')
279
- result = result.replace(/\s+premiere ligne/gi, '::first-line')
280
- result = result.replace(/\s+coche/gi, ':checked')
281
- result = result.replace(/\s+desactive/gi, ':disabled')
282
- result = result.replace(/\s+requis/gi, ':required')
283
- result = result.replace(/\s+optionnel/gi, ':optional')
284
- result = result.replace(/\s+valide/gi, ':valid')
285
- result = result.replace(/\s+invalide/gi, ':invalid')
286
- result = result.replace(/\s+vide/gi, ':empty')
287
- result = result.replace(/^racine$/gi, ':root')
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
- 'requête': 'Query',
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
- 'énumération': 'enum',
61
- 'entrée': 'input',
57
+ 'enumeration': 'enum',
58
+ 'entree': 'input',
62
59
  'scalaire': 'scalar',
63
- 'étend': 'extend',
64
- 'implémente': 'implements',
60
+ 'etend': 'extend',
61
+ 'implemente': 'implements',
65
62
  'fragment': 'fragment',
66
63
  'sur': 'on',
67
64
  'directive': 'directive',
68
- 'répéter': '@repeatable',
69
- 'chaîne': 'String',
65
+ 'repeter': '@repeatable',
66
+ 'chaine': 'String',
70
67
  'entier': 'Int',
71
68
  'flottant': 'Float',
72
- 'booléen': 'Boolean',
69
+ 'booleen': 'Boolean',
73
70
  'identifiant': 'ID',
74
71
  'date': 'Date',
75
72
  'datetime': 'DateTime',
76
73
  'json': 'JSON',
77
74
  'url': 'URL',
78
- 'courriel': 'Email',
75
+ 'email': 'Email',
79
76
  'vrai': 'true',
80
77
  'faux': 'false',
81
78
  'nul': 'null',
82
79
  'non nul': '!',
83
80
  'liste': '[]',
84
- 'déprécié': '@deprecated',
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
- 'clé': '@key',
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
- 'chaîne': 'String',
101
+ 'chaine': 'String',
105
102
  'entier': 'Int',
106
103
  'flottant': 'Float',
107
- 'booléen': 'Boolean',
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
- 'courriel': 'Email',
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
- 'négatif entier': 'NegativeInt',
121
- 'non négatif entier': 'NonNegativeInt',
117
+ 'negatif entier': 'NegativeInt',
118
+ 'non negatif entier': 'NonNegativeInt',
122
119
  'non positif entier': 'NonPositiveInt',
123
120
  'positif flottant': 'PositiveFloat',
124
- 'négatif flottant': 'NegativeFloat',
125
- 'non vide chaîne': 'NonEmptyString',
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.variable?.name || variable.name
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 || []