浏览代码

implementing example store

Benoît Hubert 8 年之前
父节点
当前提交
4c269a3887
共有 58 个文件被更改,包括 60 次插入31 次删除
  1. 1 1
      .gitignore
  2. 0 0
      exemples/jquery/ajax-donnees-page-produit/config.json
  3. 0 0
      exemples/jquery/ajax-donnees-page-produit/example.html
  4. 0 0
      exemples/jquery/ajax-donnees-page-produit/script.js
  5. 0 0
      exemples/jquery/ajax-envoi-formulaire-par-get/config.json
  6. 0 0
      exemples/jquery/ajax-envoi-formulaire-par-get/example.html
  7. 0 0
      exemples/jquery/ajax-envoi-formulaire-par-get/script.js
  8. 0 0
      exemples/jquery/ajax-envoi-formulaire-par-post/config.json
  9. 0 0
      exemples/jquery/ajax-envoi-formulaire-par-post/contenu.html
  10. 0 0
      exemples/jquery/ajax-envoi-formulaire-par-post/script.js
  11. 0 0
      exemples/jquery/ajax-exemple-simple/config.json
  12. 0 0
      exemples/jquery/ajax-exemple-simple/example.html
  13. 0 0
      exemples/jquery/ajax-exemple-simple/script.js
  14. 0 0
      exemples/jquery/ajax-requete-randomuserme/config.json
  15. 0 0
      exemples/jquery/ajax-requete-randomuserme/example.html
  16. 0 0
      exemples/jquery/ajax-requete-randomuserme/script.js
  17. 0 0
      exemples/jquery/ajax-requete-themoviedborg/config.json
  18. 0 0
      exemples/jquery/ajax-requete-themoviedborg/example.html
  19. 0 0
      exemples/jquery/ajax-requete-themoviedborg/script.js
  20. 0 0
      exemples/jquery/cibler-un-element-enfant/config.json
  21. 0 0
      exemples/jquery/cibler-un-element-enfant/contenu.html
  22. 0 0
      exemples/jquery/cibler-un-element-enfant/script.js
  23. 0 0
      exemples/jquery/cibler-un-element-enfant/styles.css
  24. 0 0
      exemples/jquery/evenements-1-click-submit/config.json
  25. 0 0
      exemples/jquery/evenements-1-click-submit/example.html
  26. 0 0
      exemples/jquery/evenements-1-click-submit/script.js
  27. 0 0
      exemples/jquery/evenements-2-change/config.json
  28. 0 0
      exemples/jquery/evenements-2-change/example.html
  29. 0 0
      exemples/jquery/evenements-2-change/script.js
  30. 0 0
      exemples/jquery/evenements-3-keyup/config.json
  31. 0 0
      exemples/jquery/evenements-3-keyup/example.html
  32. 0 0
      exemples/jquery/evenements-3-keyup/script.js
  33. 0 0
      exemples/jquery/exercice-1-verifier-un-formulaire/config.json
  34. 0 0
      exemples/jquery/exercice-1-verifier-un-formulaire/example.html
  35. 0 0
      exemples/jquery/exercice-1-verifier-un-formulaire/script.js
  36. 0 0
      exemples/jquery/exercice-1-verifier-un-formulaire/test.js
  37. 0 0
      exemples/jquery/onglets/config.json
  38. 0 0
      exemples/jquery/onglets/example.html
  39. 0 0
      exemples/jquery/onglets/script.js
  40. 3 0
      exemples/jquery/repo-config.json
  41. 0 0
      exemples/jquery/selecteurs-basiques/config.json
  42. 0 0
      exemples/jquery/selecteurs-basiques/example.html
  43. 0 0
      exemples/jquery/selecteurs-basiques/script.js
  44. 0 0
      exemples/jquery/selecteurs-filtres-2/config.json
  45. 0 0
      exemples/jquery/selecteurs-filtres-2/example.html
  46. 0 0
      exemples/jquery/selecteurs-filtres-2/script.js
  47. 0 0
      exemples/jquery/selecteurs-filtres/config.json
  48. 0 0
      exemples/jquery/selecteurs-filtres/example.html
  49. 0 0
      exemples/jquery/selecteurs-filtres/script.js
  50. 0 0
      exemples/jquery/selecteurs-multiples/config.json
  51. 0 0
      exemples/jquery/selecteurs-multiples/example.html
  52. 0 0
      exemples/jquery/selecteurs-multiples/script.js
  53. 0 0
      exemples/jquery/validation-de-formulaires-bootstrap/config.json
  54. 0 0
      exemples/jquery/validation-de-formulaires-bootstrap/example.html
  55. 0 0
      exemples/jquery/validation-de-formulaires-bootstrap/script.js
  56. 0 26
      exemples/liste.json
  57. 54 2
      sandboxApp.js
  58. 2 2
      utils/migrate_old.js

+ 1 - 1
.gitignore

@@ -4,5 +4,5 @@
 doc/
 node_modules/
 package-lock.json
-exemples/ajax-requete-themoviedborg/tmdb-key.json
+exemples/jquery/ajax-requete-themoviedborg/tmdb-key.json
 _stuff/

exemples/ajax-donnees-page-produit/config.json → exemples/jquery/ajax-donnees-page-produit/config.json


exemples/ajax-donnees-page-produit/example.html → exemples/jquery/ajax-donnees-page-produit/example.html


exemples/ajax-donnees-page-produit/script.js → exemples/jquery/ajax-donnees-page-produit/script.js


exemples/ajax-envoi-formulaire-par-get/config.json → exemples/jquery/ajax-envoi-formulaire-par-get/config.json


exemples/ajax-envoi-formulaire-par-get/example.html → exemples/jquery/ajax-envoi-formulaire-par-get/example.html


exemples/ajax-envoi-formulaire-par-get/script.js → exemples/jquery/ajax-envoi-formulaire-par-get/script.js


exemples/ajax-envoi-formulaire-par-post/config.json → exemples/jquery/ajax-envoi-formulaire-par-post/config.json


exemples/ajax-envoi-formulaire-par-post/contenu.html → exemples/jquery/ajax-envoi-formulaire-par-post/contenu.html


exemples/ajax-envoi-formulaire-par-post/script.js → exemples/jquery/ajax-envoi-formulaire-par-post/script.js


exemples/ajax-exemple-simple/config.json → exemples/jquery/ajax-exemple-simple/config.json


exemples/ajax-exemple-simple/example.html → exemples/jquery/ajax-exemple-simple/example.html


exemples/ajax-exemple-simple/script.js → exemples/jquery/ajax-exemple-simple/script.js


exemples/ajax-requete-randomuserme/config.json → exemples/jquery/ajax-requete-randomuserme/config.json


exemples/ajax-requete-randomuserme/example.html → exemples/jquery/ajax-requete-randomuserme/example.html


exemples/ajax-requete-randomuserme/script.js → exemples/jquery/ajax-requete-randomuserme/script.js


exemples/ajax-requete-themoviedborg/config.json → exemples/jquery/ajax-requete-themoviedborg/config.json


exemples/ajax-requete-themoviedborg/example.html → exemples/jquery/ajax-requete-themoviedborg/example.html


exemples/ajax-requete-themoviedborg/script.js → exemples/jquery/ajax-requete-themoviedborg/script.js


exemples/cibler-un-element-enfant/config.json → exemples/jquery/cibler-un-element-enfant/config.json


exemples/cibler-un-element-enfant/contenu.html → exemples/jquery/cibler-un-element-enfant/contenu.html


exemples/cibler-un-element-enfant/script.js → exemples/jquery/cibler-un-element-enfant/script.js


exemples/cibler-un-element-enfant/styles.css → exemples/jquery/cibler-un-element-enfant/styles.css


exemples/evenements-1-click-submit/config.json → exemples/jquery/evenements-1-click-submit/config.json


exemples/evenements-1-click-submit/example.html → exemples/jquery/evenements-1-click-submit/example.html


exemples/evenements-1-click-submit/script.js → exemples/jquery/evenements-1-click-submit/script.js


exemples/evenements-2-change/config.json → exemples/jquery/evenements-2-change/config.json


exemples/evenements-2-change/example.html → exemples/jquery/evenements-2-change/example.html


exemples/evenements-2-change/script.js → exemples/jquery/evenements-2-change/script.js


exemples/evenements-3-keyup/config.json → exemples/jquery/evenements-3-keyup/config.json


exemples/evenements-3-keyup/example.html → exemples/jquery/evenements-3-keyup/example.html


exemples/evenements-3-keyup/script.js → exemples/jquery/evenements-3-keyup/script.js


exemples/exercice-1-verifier-un-formulaire/config.json → exemples/jquery/exercice-1-verifier-un-formulaire/config.json


exemples/exercice-1-verifier-un-formulaire/example.html → exemples/jquery/exercice-1-verifier-un-formulaire/example.html


exemples/exercice-1-verifier-un-formulaire/script.js → exemples/jquery/exercice-1-verifier-un-formulaire/script.js


exemples/exercice-1-verifier-un-formulaire/test.js → exemples/jquery/exercice-1-verifier-un-formulaire/test.js


exemples/onglets/config.json → exemples/jquery/onglets/config.json


exemples/onglets/example.html → exemples/jquery/onglets/example.html


exemples/onglets/script.js → exemples/jquery/onglets/script.js


+ 3 - 0
exemples/jquery/repo-config.json

@@ -0,0 +1,3 @@
+{
+  "title": "jQuery"
+}

exemples/selecteurs-basiques/config.json → exemples/jquery/selecteurs-basiques/config.json


exemples/selecteurs-basiques/example.html → exemples/jquery/selecteurs-basiques/example.html


exemples/selecteurs-basiques/script.js → exemples/jquery/selecteurs-basiques/script.js


exemples/selecteurs-filtres-2/config.json → exemples/jquery/selecteurs-filtres-2/config.json


exemples/selecteurs-filtres-2/example.html → exemples/jquery/selecteurs-filtres-2/example.html


exemples/selecteurs-filtres-2/script.js → exemples/jquery/selecteurs-filtres-2/script.js


exemples/selecteurs-filtres/config.json → exemples/jquery/selecteurs-filtres/config.json


exemples/selecteurs-filtres/example.html → exemples/jquery/selecteurs-filtres/example.html


exemples/selecteurs-filtres/script.js → exemples/jquery/selecteurs-filtres/script.js


exemples/selecteurs-multiples/config.json → exemples/jquery/selecteurs-multiples/config.json


exemples/selecteurs-multiples/example.html → exemples/jquery/selecteurs-multiples/example.html


exemples/selecteurs-multiples/script.js → exemples/jquery/selecteurs-multiples/script.js


exemples/validation-de-formulaires-bootstrap/config.json → exemples/jquery/validation-de-formulaires-bootstrap/config.json


exemples/validation-de-formulaires-bootstrap/example.html → exemples/jquery/validation-de-formulaires-bootstrap/example.html


exemples/validation-de-formulaires-bootstrap/script.js → exemples/jquery/validation-de-formulaires-bootstrap/script.js


+ 0 - 26
exemples/liste.json

@@ -1,26 +0,0 @@
-[
-  { "slug": "selecteurs-basiques", "title": "Sélecteurs basiques" },
-  { "slug": "selecteurs-multiples", "title": "Sélecteurs multiples" },
-  { "slug": "selecteurs-filtres", "title": "Sélecteurs : filtres" },
-  { "slug": "selecteurs-filtres-2", "title": "Sélecteurs : filtres 2" },
-  { "slug": "evenements-1-click-submit", "title": "Evènements 1 : click et submit" },
-  { "slug": "evenements-2-change", "title": "Evènements 2 : change" },
-  { "slug": "evenements-3-keyup", "title": "Evènements 3 : keyup" },
-  { "slug": "ajax-requete-randomuserme", "title": "AJAX - Requête randomuser.me" },
-  { "slug": "ajax-requete-themoviedborg", "title": "AJAX - Requête themoviedb.org" },
-  {
-    "slug": "exercice-1-verifier-un-formulaire",
-    "title": "Exercice 1 : vérifier un formulaire",
-    "test": true
-  },
-  { "slug": "onglets", "title": "Onglets" },
-  {
-    "slug": "validation-de-formulaires-bootstrap",
-    "title": "Validation de formulaires Bootstrap"
-  },
-  { "slug": "ajax-exemple-simple", "title": "AJAX - Exemple simple" },
-  { "slug": "ajax-envoi-formulaire-par-get", "title": "AJAX - Envoi formulaire par GET" },
-  { "slug": "ajax-envoi-formulaire-par-post", "title": "AJAX - Envoi formulaire par POST" },
-  { "slug": "ajax-donnees-page-produit", "title": "AJAX - Données - page produit" },
-  { "slug": "cibler-un-element-enfant", "title": "Cibler un élément enfant" }
-]

+ 54 - 2
sandboxApp.js

@@ -10,9 +10,9 @@ var fs           = require('fs');
 var Promise      = require('bluebird');
 var Mustache     = require('mustache');
 var app          = express();
-var examplesJSON = __dirname + '/exemples/liste.json';
+// var examplesJSON = __dirname + '/exemples/liste.json';
 var sandboxTpml  = fs.readFileSync(__dirname + '/html/template.mustache.html').toString();
-var examples     = require(examplesJSON);
+// var examples     = require(examplesJSON);
 Promise.promisifyAll(fs);
 
 // Initialize Express app: root folder as static, body parsers
@@ -20,6 +20,58 @@ app.use(express.static(__dirname));
 app.use(bodyParser.json());
 app.use(bodyParser.urlencoded({ extended: true }));
 
+function scandir(path, excludes) {
+  excludes = excludes || [];
+  return fs.readdirAsync(path)
+  .then(dirContent => {
+    excludes.forEach(file => {
+      var idxInContent = dirContent.indexOf(file);
+      if(idxInContent !== -1) {
+        dirContent.splice(idxInContent, 1);
+      }
+    });
+    return dirContent;
+  })
+}
+
+function ExampleStore(path) {
+  this.rootPath = path;
+  this.repos = [];
+}
+
+ExampleStore.prototype.init = function() {
+  const loadRepository = this.loadRepository.bind(this);
+  return scandir(this.rootPath, ['.gitkeep'])
+  .then(repositories => Promise.map(
+    repositories, loadRepository
+  ));
+};
+
+ExampleStore.prototype.loadRepository = function(repoPath) {
+  const loadExample    = this.loadExample.bind(this);
+  const fullPath       = this.rootPath + '/' + repoPath;
+  const repoConfig     = require(fullPath + '/repo-config.json');
+  const repoDescriptor = {
+    title: repoConfig.title,
+    path: repoPath,
+    examples: []
+  };
+  this.repos.push(repoDescriptor);
+  return scandir(fullPath, ['.gitkeep', 'repo-config.json'])
+  .then(examples => Promise.map(
+    examples, example => loadExample(repoDescriptor, example)
+  ))
+};
+
+ExampleStore.prototype.loadExample = function(repo, example) {
+  var exampleConfig = require(repo.path + '/' + example + '/config.json');
+  
+};
+
+var es = new ExampleStore(__dirname + '/exemples');
+es.init();
+
+
 function addExample(slug, title) {
   examples.push({ slug: slug, title: title });
   return fs.writeFileAsync(examplesJSON, beautify(examples, null, 2, 100));

+ 2 - 2
utils/migrate_old.js

@@ -2,8 +2,8 @@ const fs          = require('fs');
 const path        = require('path');
 const { exec }    = require('child_process');
 const Promise     = require('bluebird');
-const examplesDir = path.normalize(__dirname + '/../exemples');
-const listJson    = require('../exemples/liste.json');
+const examplesDir = path.normalize(__dirname + '/../exemples/jquery');
+// const listJson    = require('../exemples/liste.json');
 const beautify    = require("json-beautify");
 Promise.promisifyAll(fs);