'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));