66 lines
1.5 KiB
JavaScript
66 lines
1.5 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var _ = require('lodash'),
|
||
|
fs = require('fs-extra'),
|
||
|
path = require('path');
|
||
|
|
||
|
var file = require('../common/file'),
|
||
|
mapping = require('../common/mapping');
|
||
|
|
||
|
var templatePath = path.join(__dirname, 'template/doc'),
|
||
|
template = file.globTemplate(path.join(templatePath, '*.jst'));
|
||
|
|
||
|
var argNames = ['a', 'b', 'c', 'd'];
|
||
|
|
||
|
var templateData = {
|
||
|
'mapping': mapping,
|
||
|
'toArgOrder': toArgOrder,
|
||
|
'toFuncList': toFuncList
|
||
|
};
|
||
|
|
||
|
function toArgOrder(array) {
|
||
|
var reordered = [];
|
||
|
_.each(array, function(newIndex, index) {
|
||
|
reordered[newIndex] = argNames[index];
|
||
|
});
|
||
|
return '`(' + reordered.join(', ') + ')`';
|
||
|
}
|
||
|
|
||
|
function toFuncList(array) {
|
||
|
var chunks = _.chunk(array.slice().sort(), 5),
|
||
|
lastChunk = _.last(chunks),
|
||
|
last = lastChunk ? lastChunk.pop() : undefined;
|
||
|
|
||
|
chunks = _.reject(chunks, _.isEmpty);
|
||
|
lastChunk = _.last(chunks);
|
||
|
|
||
|
var result = '`' + _.map(chunks, function(chunk) {
|
||
|
return chunk.join('`, `') + '`';
|
||
|
}).join(',\n`');
|
||
|
|
||
|
if (last == null) {
|
||
|
return result;
|
||
|
}
|
||
|
if (_.size(chunks) > 1 || _.size(lastChunk) > 1) {
|
||
|
result += ',';
|
||
|
}
|
||
|
result += ' &';
|
||
|
result += _.size(lastChunk) < 5 ? ' ' : '\n';
|
||
|
return result + '`' + last + '`';
|
||
|
}
|
||
|
|
||
|
/*----------------------------------------------------------------------------*/
|
||
|
|
||
|
function onComplete(error) {
|
||
|
if (error) {
|
||
|
throw error;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function build(target) {
|
||
|
target = path.resolve(target);
|
||
|
fs.writeFile(target, template.wiki(templateData), onComplete);
|
||
|
}
|
||
|
|
||
|
build(_.last(process.argv));
|