mermaid/gulp/tasks/doc.js

136 lines
3.9 KiB
JavaScript
Raw Normal View History

2017-04-11 22:14:25 +08:00
var gulp = require('gulp')
var vartree = require('gulp-vartree')
var gmarked = require('gulp-marked')
var concat = require('gulp-concat')
var frontMatter = require('gulp-front-matter')
var hogan = require('hogan.js')
var es = require('event-stream')
var fs = require('fs')
2015-09-24 08:04:06 +02:00
// Compile a template for rendering each page
2017-04-11 22:14:25 +08:00
var template = hogan.compile(String(fs.readFileSync('docs/tpl/slate.html')))
2015-09-24 08:04:06 +02:00
2017-04-11 22:14:25 +08:00
var root = {}
var filelist = []
var iterator = function (obj) {
var i
2015-09-24 08:04:06 +02:00
for (i = 0; i < obj.childs.length; i++) {
2017-04-11 22:14:25 +08:00
var item = obj.childs[i]
2015-09-24 08:04:06 +02:00
if (item.folder) {
2017-04-11 22:14:25 +08:00
iterator(item)
2015-09-24 08:04:06 +02:00
} else {
2017-04-11 22:14:25 +08:00
console.log(item.path + item.name)
filelist.push('build/www' + '/' + item.path + item.name + '.html')
2015-09-24 08:04:06 +02:00
}
}
2017-04-11 22:14:25 +08:00
}
2015-09-24 08:04:06 +02:00
var renderer = {
2017-04-11 22:14:25 +08:00
code: function (code, language) {
2015-09-24 08:04:06 +02:00
if (language === 'mermaid') {
2017-04-11 22:14:25 +08:00
return '<div class="mermaid">' + code + '</div>'
2015-09-24 08:04:06 +02:00
} else {
2017-04-11 22:14:25 +08:00
language = 'css'
return '<pre class="' + language + '"><code>' + code + '</code></pre>'
2015-09-24 08:04:06 +02:00
}
}
2017-04-11 22:14:25 +08:00
}
var filelog = require('gulp-filelog')
2015-09-24 08:04:06 +02:00
2017-04-11 22:14:25 +08:00
gulp.task('vartree', ['dox', 'copyContent', 'copySite'], function () {
2015-09-24 08:04:06 +02:00
gulp.src(['build/content/**/*.md'])
2017-04-16 18:36:42 +08:00
.pipe(filelog())
2015-09-24 08:04:06 +02:00
.pipe(frontMatter({
2017-04-11 22:14:25 +08:00
property: 'order' // will put metadata in the file.meta property
2015-09-24 08:04:06 +02:00
}))
.pipe(vartree({
2017-04-11 22:14:25 +08:00
root: root, // the root in which the vartree will be put
prop: 'order', // metadata property to collect
2015-09-24 08:04:06 +02:00
sortProp: 'order',
2017-04-11 22:14:25 +08:00
parent: 'parent' // keep a ref to the parent scope in the file.parent property
2015-09-24 08:04:06 +02:00
}))
.pipe(gmarked({
renderer: renderer,
sanitize: false
2017-04-11 22:14:25 +08:00
})) // Do whatever you want with the files later
.pipe(gulp.dest('build/www')).on('end', function () {
iterator(root)
2015-09-24 08:04:06 +02:00
gulp.src(filelist)
2015-09-26 13:00:30 +02:00
.pipe(concat('all.html'))
2017-04-11 22:14:25 +08:00
.pipe(gulp.dest('./build/www')).on('end', function () {
filelist.push('build/www' + '/all.html')
2015-09-24 08:04:06 +02:00
gulp.src(filelist)
2017-04-16 18:36:42 +08:00
.pipe(filelog('html files'))
// Run each file through a template
.pipe(es.map(function (file, cb) {
file.contents = Buffer.from(template.render(file))
2015-09-24 08:04:06 +02:00
2017-04-16 18:36:42 +08:00
cb(null, file)
}))
2015-09-24 08:04:06 +02:00
// Output to build directory
2017-04-11 22:14:25 +08:00
.pipe(gulp.dest('./dist/www'))
})
})
})
2015-09-24 08:04:06 +02:00
2017-04-11 22:14:25 +08:00
var dox = require('gulp-dox')
2015-09-26 13:00:30 +02:00
2017-04-11 22:14:25 +08:00
var map = require('map-stream')
2017-04-13 21:53:23 +08:00
var extReplace = require('gulp-ext-replace')
2015-09-24 08:04:06 +02:00
2017-04-11 22:14:25 +08:00
gulp.task('dox', function () {
return gulp.src(['./src/**/mermaidAPI.js'])
2017-04-16 18:36:42 +08:00
.pipe(filelog())
.pipe(dox({
'raw': true
}))
.pipe(map(function (file, done) {
var json = JSON.parse(file.contents.toString())
var i
var str = ''
for (i = 0; i < json.length; i++) {
str = str + json[i].description.full + '\n'
}
file.contents = Buffer.from(str)
done(null, file)
}))
.pipe(extReplace('.md'))
.pipe(gulp.dest('./build/content'))
2017-04-11 22:14:25 +08:00
})
2015-09-24 08:04:06 +02:00
2017-04-11 22:14:25 +08:00
gulp.task('copyContent', function () {
return gulp.src(['./docs/content/**/*.md'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./build/content'))
2017-04-11 22:14:25 +08:00
})
2015-09-24 08:04:06 +02:00
2017-04-11 22:14:25 +08:00
gulp.task('copyContent', function () {
return gulp.src(['./docs/content/**/*.md'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./build/content'))
2017-04-11 22:14:25 +08:00
})
2015-09-24 08:04:06 +02:00
2017-04-11 22:14:25 +08:00
gulp.task('copySite', function () {
gulp.src(['./dist/mermaid.js'])
2017-04-16 18:36:42 +08:00
.pipe(filelog())
.pipe(gulp.dest('./dist/www/javascripts/lib'))
2017-04-11 22:14:25 +08:00
gulp.src(['./docs/site/**/*.css'])
2017-04-16 18:36:42 +08:00
.pipe(filelog())
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
gulp.src(['./docs/site/**/*.eot'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
gulp.src(['./docs/site/**/*.svg'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
gulp.src(['./docs/site/**/*.png'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
gulp.src(['./docs/site/**/*.jpg'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
gulp.src(['./docs/site/**/*.ttf'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
gulp.src(['./docs/site/**/*.woff'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
gulp.src(['./docs/site/**/*.woff2'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
return gulp.src(['./docs/site/**/*.js'])
2017-04-16 18:36:42 +08:00
.pipe(gulp.dest('./dist/www'))
2017-04-11 22:14:25 +08:00
})