diff --git a/gulpfile.js b/gulpfile.js index 2f0a57d..fc924eb 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -2,11 +2,16 @@ var gulp = require('gulp'); var bower = require('gulp-bower'); var help = require('gulp-task-listing'); var clean = require('gulp-clean'); +var toml = require('gulp-toml'); var sass = require('gulp-sass'); var rename = require("gulp-rename"); var yaml = require('gulp-yaml'); var template = require('gulp-template'); +var wrapper = require('gulp-wrapper'); +var rename = require("gulp-rename"); var webserver = require('gulp-webserver'); +var marked = require('marked'); +var _ = require('lodash'); gulp.task('help', help); @@ -48,8 +53,36 @@ gulp.task('template-dev', function () { .pipe(gulp.dest('.')); }); +gulp.task('compile-articles', function(){ -gulp.task('default', ['bower', 'sass', 'compile-results']); + var transformArticle = function(article){ + var isMarkdownKey = /markdown/i; + _.each(article, function(section, sectionName){ + _.each(section, function(value, key){ + if(isMarkdownKey.test(key) && _.isString(value)){ + section[key] = marked(value); + } + }); + }); + return JSON.stringify(article, null, 4); + }; + + gulp.src('data/articles/**/*.toml.md') + .pipe(toml({to: transformArticle})) + .pipe(wrapper({ + header: "define(['m', '_'], function (m, _ ) {\nreturn ", + footer: ';\n});\n' + })) + .pipe(rename(function(path){ + path.basename = path.basename.replace(/\.toml$/i, ''); + path.extname = '.js'; + return path; + })) + .pipe(gulp.dest('./script/articles/')); + +}); + +gulp.task('default', ['bower', 'sass', 'compile-results', 'compile-articles']); gulp.task('prod', ['default', 'template-prod']); @@ -63,8 +96,10 @@ gulp.task('webserver', function(){ })); }); + gulp.task('dev', ['default', 'webserver', 'template-dev', 'bower'], function(){ gulp.watch('./scss/*.scss', ['sass']); gulp.watch('*.tmpl.html', ['template-dev']); + gulp.watch('./data/articles/**/*', ['compile-articles']); return gulp.watch('./data/*.yaml', ['compile-results']); }); diff --git a/package.json b/package.json index d25cd91..d30da82 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,11 @@ "gulp-sass": "^2.1.1", "gulp-task-listing": "^1.0.1", "gulp-template": "^3.1.0", + "gulp-toml": "^0.1.1", + "gulp-wrap": "^0.11.0", + "gulp-wrapper": "^1.0.0", + "lodash": "^4.6.1", + "marked": "^0.3.5", "requirejs": "^2.1.22" }, "devDependencies": { diff --git a/script/articles/articles.js b/script/articles/articles.js new file mode 100644 index 0000000..444d757 --- /dev/null +++ b/script/articles/articles.js @@ -0,0 +1,16 @@ +define(['m', 'articles/inscription'], function (m, inscription) { + + var simplifyArticleStructure = function(article){ + var ret = {}; + _.each(article, function(section, sectionName){ + ret[sectionName] = m.trust(section.innerMarkdown); + }); + return ret; + }; + + var articles = []; + articles.push(inscription); + + + return _.map(articles, simplifyArticleStructure); +});