|
|
@@ -1,3 +1,6 @@
|
|
|
+/* global __dirname */
|
|
|
+/* jshint strict:false */
|
|
|
+"use strict";
|
|
|
var express = require('express');
|
|
|
var bodyParser = require('body-parser');
|
|
|
var slug = require('slug');
|
|
|
@@ -5,6 +8,7 @@ var beautify = require("json-beautify");
|
|
|
var _ = require('lodash');
|
|
|
var fs = require('fs');
|
|
|
var Promise = require('bluebird');
|
|
|
+var Mustache = require('mustache');
|
|
|
var app = express();
|
|
|
var examplesJSON = __dirname + '/exemples/liste.json';
|
|
|
var sandboxTpml = fs.readFileSync(__dirname + '/exemples/template.html').toString();
|
|
|
@@ -21,6 +25,37 @@ function addExample(slug, title) {
|
|
|
return fs.writeFileAsync(examplesJSON, beautify(examples, null, 2, 100));
|
|
|
}
|
|
|
|
|
|
+function readConfigJson(exampleSlug) {
|
|
|
+ console.log(exampleSlug);
|
|
|
+ return require('./exemples/' + exampleSlug + '/config.json');
|
|
|
+}
|
|
|
+
|
|
|
+function readFileAsync(file) {
|
|
|
+ return fs.readFileAsync(file)
|
|
|
+ .then(buf => (buf.toString()));
|
|
|
+}
|
|
|
+
|
|
|
+// function readFilesAsync(path, files) {
|
|
|
+// // console.log('reading files', files, 'from path', path);
|
|
|
+// return Promise.map(files,
|
|
|
+// f => readFileAsync(path + '/' + f)
|
|
|
+// );
|
|
|
+// }
|
|
|
+
|
|
|
+// function readExampleFiles(slug, config) {
|
|
|
+// const exampleDir = __dirname + '/exemples/' + slug;
|
|
|
+// const libsCssDir = __dirname + '/css/vendor';
|
|
|
+// const libsJsDir = __dirname + '/js/vendor';
|
|
|
+// const { html, js, css, libsCss, libsJs } = config;
|
|
|
+// return Promise.all([
|
|
|
+// readFilesAsync(exampleDir, html),
|
|
|
+// readFilesAsync(exampleDir, js),
|
|
|
+// readFilesAsync(exampleDir, css),
|
|
|
+// readFilesAsync(libsJsDir, libsJs),
|
|
|
+// readFilesAsync(libsCssDir, libsCss),
|
|
|
+// ]);
|
|
|
+// }
|
|
|
+
|
|
|
app.post('/examples', function(req, res) {
|
|
|
var title = req.body.title;
|
|
|
if(! req.body.title) {
|
|
|
@@ -42,14 +77,13 @@ app.post('/examples', function(req, res) {
|
|
|
});
|
|
|
|
|
|
app.get('/examples/:slug', function(req, res) {
|
|
|
- var slug = req.params.slug;
|
|
|
- fs.readFileAsync(__dirname + '/exemples/' + slug + '/contenu.html')
|
|
|
- .then(buf => buf.toString())
|
|
|
- .then(body => (
|
|
|
- sandboxTpml
|
|
|
- .replace('__body__', body)
|
|
|
- .replace('__slug__', slug)
|
|
|
- ))
|
|
|
+ const { slug } = req.params;
|
|
|
+ const config = readConfigJson(slug);
|
|
|
+ const { title, html, js, css, libsCss, libsJs } = config;
|
|
|
+ readFileAsync(__dirname + '/exemples/' + slug + '/' + html[0])
|
|
|
+ .then(body =>
|
|
|
+ Mustache.render(sandboxTpml, { body, slug, title, js, css, libsCss, libsJs })
|
|
|
+ )
|
|
|
.then(html => res.send(html));
|
|
|
});
|
|
|
|