roc
Version:
Build modern web applications easily
87 lines (61 loc) • 2.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = genereateMarkdownActions;
var _redent = require('redent');
var _redent2 = _interopRequireDefault(_redent);
var _trimNewlines = require('trim-newlines');
var _trimNewlines2 = _interopRequireDefault(_trimNewlines);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Function used to generate markdown documentation for all the registered actions.
* Can be piped to a file and uploaded somewhere easily.
*
* @param {string} name - Name from info object in {@link rocCommandObject}.
* @param {Object[]} actions - The actions from {@link rocCommandObject}.
*
* @returns {string} - Markdown documentation.
*/
function genereateMarkdownActions(name) {
let actions = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
// Remove project actions if any
const lastExtension = actions[actions.length - 1];
if (lastExtension && lastExtension.project) {
actions.pop();
}
if (actions.length === 0) {
return 'No actions available.';
}
const rows = [];
// Header
rows.push('# Actions for `' + name + '`');
rows.push('');
rows.push('## Actions');
actions.forEach(extension => {
const sortedActions = Object.keys(extension.actions).sort();
rows.push(`* [${ extension.name }](#${ extension.name })`);
sortedActions.forEach(action => {
rows.push(` * [${ action }](#${ action })`);
});
});
rows.push('');
actions.forEach(extension => {
rows.push(`## ${ extension.name }`);
rows.push('');
const sortedActions = Object.keys(extension.actions).sort();
sortedActions.forEach(action => {
const currentAction = extension.actions[action];
rows.push(`### ${ action }`);
if (currentAction.description) {
rows.push('', (0, _redent2.default)((0, _trimNewlines2.default)(currentAction.description)));
}
rows.push('');
rows.push('__Connects to extension:__ ' + (currentAction.extension ? `\`${ currentAction.extension }\`` : 'Not specified') + ' ');
rows.push('__Connects to hook:__ ' + (currentAction.hook ? `\`${ currentAction.hook }\`` : 'Not specified') + ' ');
rows.push('');
});
});
return rows.join('\n');
}
//# sourceMappingURL=generate-markdown-actions.js.map