ether-code 0.1.0 → 0.1.2

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/compiler.js CHANGED
@@ -212,8 +212,8 @@ class EtherCompiler {
212
212
  inferTargetFromContent(content) {
213
213
  const patterns = {
214
214
  html: [
215
- /\b(page|document|entête|corps|section|div|paragraphe|titre|lien|image|formulaire|bouton)\b/i,
216
- /\b(balise|élément|attribut)\b/i
215
+ /\b(page|document|entête|entete|corps|section|div|paragraphe|titre|lien|image|formulaire|bouton)\b/i,
216
+ /\b(balise|élément|element|attribut)\b/i
217
217
  ],
218
218
  css: [
219
219
  /\b(style|couleur|taille|marge|bordure|fond|police|largeur|hauteur)\s*[:=]/i,
@@ -222,7 +222,7 @@ class EtherCompiler {
222
222
  ],
223
223
  js: [
224
224
  /\b(fonction|variable|constante|si|sinon|pour|tant que|retourner)\b/i,
225
- /\b(classe|méthode|constructeur)\b/i,
225
+ /\b(classe|méthode|methode|constructeur)\b/i,
226
226
  /=>\s*\{/
227
227
  ],
228
228
  php: [
@@ -230,7 +230,7 @@ class EtherCompiler {
230
230
  /\$\w+/
231
231
  ],
232
232
  sql: [
233
- /\b(sélectionner|insérer|mettre à jour|supprimer|créer table|depuis|)\b/i,
233
+ /\b(sélectionner|selectionner|insérer|inserer|mettre à jour|mettre a jour|supprimer|créer table|creer table|depuis|où|ou)\b/i,
234
234
  /\b(SELECT|INSERT|UPDATE|DELETE|CREATE|FROM|WHERE)\b/i
235
235
  ],
236
236
  python: [
@@ -238,7 +238,7 @@ class EtherCompiler {
238
238
  /:\s*$/m
239
239
  ],
240
240
  react: [
241
- /\b(composant|état|effet|props|rendu)\b/i,
241
+ /\b(composant|état|etat|effet|props|rendu)\b/i,
242
242
  /<[\w]+[^>]*\/>/
243
243
  ],
244
244
  graphql: [
@@ -295,4 +295,4 @@ class EtherCompiler {
295
295
  }
296
296
  }
297
297
 
298
- module.exports = { EtherCompiler, GENERATORS, TARGET_EXTENSIONS }
298
+ module.exports = { EtherCompiler, GENERATORS, TARGET_EXTENSIONS }
package/cli/ether.js CHANGED
@@ -146,11 +146,23 @@ async function cmdInit() {
146
146
  fs.mkdirSync(srcDir, { recursive: true })
147
147
  logSuccess('Dossier src/ créé')
148
148
  }
149
-
150
- const distDir = path.join(cwd, 'dist')
151
- if (!fs.existsSync(distDir)) {
152
- fs.mkdirSync(distDir, { recursive: true })
153
- logSuccess('Dossier dist/ créé')
149
+
150
+ const publicDir = path.join(cwd, 'public')
151
+ if (!fs.existsSync(publicDir)) {
152
+ fs.mkdirSync(publicDir, { recursive: true })
153
+ logSuccess('Dossier public/ créé')
154
+ }
155
+
156
+ const imagesDir = path.join(publicDir, 'images')
157
+ if (!fs.existsSync(imagesDir)) {
158
+ fs.mkdirSync(imagesDir, { recursive: true })
159
+ logSuccess('Dossier public/images/ créé')
160
+ }
161
+
162
+ const videosDir = path.join(publicDir, 'videos')
163
+ if (!fs.existsSync(videosDir)) {
164
+ fs.mkdirSync(videosDir, { recursive: true })
165
+ logSuccess('Dossier public/videos/ créé')
154
166
  }
155
167
 
156
168
  const configContent = `module.exports = {
@@ -188,6 +200,28 @@ async function cmdInit() {
188
200
  logWarning('ether.config.js existe déjà')
189
201
  }
190
202
 
203
+ const projectName = path.basename(cwd)
204
+ const packageJson = {
205
+ name: projectName,
206
+ version: "1.0.0",
207
+ description: "Projet Ether",
208
+ scripts: {
209
+ dev: "ether dev",
210
+ build: "ether build",
211
+ check: "ether check"
212
+ },
213
+ keywords: ["ether"],
214
+ license: "MIT"
215
+ }
216
+
217
+ const packagePath = path.join(cwd, 'package.json')
218
+ if (!fs.existsSync(packagePath)) {
219
+ fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2))
220
+ logSuccess('Fichier package.json créé')
221
+ } else {
222
+ logWarning('package.json existe déjà')
223
+ }
224
+
191
225
  const exampleEth = `// Exemple de fichier Ether
192
226
  // Cible: html
193
227
 
@@ -230,6 +264,7 @@ async function cmdBuild(options) {
230
264
  const config = loadConfig(options.config)
231
265
  const srcDir = path.resolve(process.cwd(), config.src)
232
266
  const outDir = path.resolve(process.cwd(), options.output || config.out)
267
+ const publicDir = path.resolve(process.cwd(), config.public || 'public')
233
268
 
234
269
  if (!fs.existsSync(srcDir)) {
235
270
  logError(`Dossier source introuvable: ${srcDir}`)
@@ -240,6 +275,13 @@ async function cmdBuild(options) {
240
275
  fs.mkdirSync(outDir, { recursive: true })
241
276
  }
242
277
 
278
+ if (fs.existsSync(publicDir)) {
279
+ copyDir(publicDir, outDir)
280
+ if (!options.quiet) {
281
+ logSuccess('Dossier public/ copié vers dist/')
282
+ }
283
+ }
284
+
243
285
  const compiler = new EtherCompiler(config)
244
286
 
245
287
  const files = findEthFiles(srcDir)
@@ -450,6 +492,25 @@ function findEthFiles(dir) {
450
492
  return files
451
493
  }
452
494
 
495
+ function copyDir(src, dest) {
496
+ if (!fs.existsSync(dest)) {
497
+ fs.mkdirSync(dest, { recursive: true })
498
+ }
499
+
500
+ const entries = fs.readdirSync(src, { withFileTypes: true })
501
+
502
+ for (const entry of entries) {
503
+ const srcPath = path.join(src, entry.name)
504
+ const destPath = path.join(dest, entry.name)
505
+
506
+ if (entry.isDirectory()) {
507
+ copyDir(srcPath, destPath)
508
+ } else {
509
+ fs.copyFileSync(srcPath, destPath)
510
+ }
511
+ }
512
+ }
513
+
453
514
  function parseArgs(args) {
454
515
  const options = {
455
516
  command: null,
@@ -529,4 +590,4 @@ async function main() {
529
590
  main().catch(err => {
530
591
  logError(err.message)
531
592
  process.exit(1)
532
- })
593
+ })
@@ -557,7 +557,7 @@
557
557
  "comparators": {
558
558
  "plusGrandQue": { "fr": "plus grand que", "en": "greater than", "es": "mayor que", "ru": "больше чем", "zh": "大于", "ja": "より大きい" },
559
559
  "plusPetitQue": { "fr": "plus petit que", "en": "less than", "es": "menor que", "ru": "меньше чем", "zh": "小于", "ja": "より小さい" },
560
- "egalA": { "fr": "égal Ô, "en": "equal to", "es": "igual a", "ru": "равно", "zh": "等于", "ja": "等しい" },
560
+ "egalA": { "fr": "égal à", "en": "equal to", "es": "igual a", "ru": "равно", "zh": "等于", "ja": "等しい" },
561
561
  "auMoins": { "fr": "au moins", "en": "at least", "es": "al menos", "ru": "не менее", "zh": "至少", "ja": "以上" },
562
562
  "auPlus": { "fr": "au plus", "en": "at most", "es": "como mucho", "ru": "не более", "zh": "至多", "ja": "以下" }
563
563
  },
@@ -538,8 +538,8 @@
538
538
 
539
539
  "entities": {
540
540
  "espaceInsecable": { "fr": "espace insécable", "en": "non-breaking space", "es": "espacio irrompible", "ru": "неразрывный пробел", "zh": "不换行空格", "ja": "ノーブレークスペース", "html": "&nbsp;" },
541
- "inferieurA": { "fr": "inférieur Ô, "en": "less than", "es": "menor que", "ru": "меньше", "zh": "小于", "ja": "小なり", "html": "&lt;" },
542
- "superieurA": { "fr": "supérieur Ô, "en": "greater than", "es": "mayor que", "ru": "больше", "zh": "大于", "ja": "大なり", "html": "&gt;" },
541
+ "inferieurA": { "fr": "inférieur à", "en": "less than", "es": "menor que", "ru": "меньше", "zh": "小于", "ja": "小なり", "html": "&lt;" },
542
+ "superieurA": { "fr": "supérieur à", "en": "greater than", "es": "mayor que", "ru": "больше", "zh": "大于", "ja": "大なり", "html": "&gt;" },
543
543
  "esperluette": { "fr": "esperluette", "en": "ampersand", "es": "ampersand", "ru": "амперсанд", "zh": "和号", "ja": "アンパサンド", "html": "&amp;" },
544
544
  "guillemet": { "fr": "guillemet", "en": "quotation mark", "es": "comillas", "ru": "кавычка", "zh": "引号", "ja": "引用符", "html": "&quot;" },
545
545
  "apostrophe": { "fr": "apostrophe", "en": "apostrophe", "es": "apóstrofo", "ru": "апостроф", "zh": "撇号", "ja": "アポストロフィ", "html": "&apos;" },
package/i18n/i18n-js.json CHANGED
@@ -1331,7 +1331,7 @@
1331
1331
  "ja": "イズアレイ"
1332
1332
  },
1333
1333
  "a": {
1334
- "fr": "Ô,
1334
+ "fr": "à",
1335
1335
  "en": "at",
1336
1336
  "es": "en",
1337
1337
  "ru": "по",
@@ -1381,7 +1381,7 @@
1381
1381
  "ja": "レングス"
1382
1382
  },
1383
1383
  "caractereA": {
1384
- "fr": "caractère Ô,
1384
+ "fr": "caractère à",
1385
1385
  "en": "char at",
1386
1386
  "es": "carácter en",
1387
1387
  "ru": "символ по",
@@ -1389,7 +1389,7 @@
1389
1389
  "ja": "キャラアット"
1390
1390
  },
1391
1391
  "codeCaractereA": {
1392
- "fr": "code caractère Ô,
1392
+ "fr": "code caractère à",
1393
1393
  "en": "char code at",
1394
1394
  "es": "código carácter en",
1395
1395
  "ru": "код символа по",
@@ -1581,7 +1581,7 @@
1581
1581
  "ja": "トリムエンド"
1582
1582
  },
1583
1583
  "a": {
1584
- "fr": "Ô,
1584
+ "fr": "à",
1585
1585
  "en": "at",
1586
1586
  "es": "en",
1587
1587
  "ru": "по",
@@ -2624,7 +2624,7 @@
2624
2624
  "ja": "使用"
2625
2625
  },
2626
2626
  "aSql": {
2627
- "fr": "Ô,
2627
+ "fr": "à",
2628
2628
  "en": "to",
2629
2629
  "es": "a",
2630
2630
  "ru": "к",
@@ -2760,7 +2760,7 @@
2760
2760
  "ja": "ロール内"
2761
2761
  },
2762
2762
  "appartientA": {
2763
- "fr": "appartient Ô,
2763
+ "fr": "appartient à",
2764
2764
  "en": "member of",
2765
2765
  "es": "miembro de",
2766
2766
  "ru": "член",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ether-code",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Ether - Le langage intentionnel",
5
5
  "main": "cli/compiler.js",
6
6
  "bin": {
@@ -20,7 +20,7 @@
20
20
  "french",
21
21
  "multilingual"
22
22
  ],
23
- "author": "Steve",
23
+ "author": "Stéphane LEGRAND",
24
24
  "license": "MIT",
25
25
  "repository": {
26
26
  "type": "git",