kibana-123
Version:
Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic
75 lines (56 loc) • 2.34 kB
JavaScript
var loadFunctions = require('./load_functions.js');
var functions = loadFunctions('series_functions/');
var _ = require('lodash');
module.exports = (function () {
var functionArray = _.map(functions, function (val, key) {
// TODO: This won't work on frozen objects, it should be removed when everything is converted to datasources and chainables
return _.extend({}, val, {name: key});
});
function toDocBlock(fn) {
var help = '';
if (fn.isAlias) return help;
help += '#### .' + fn.name + '()\n';
help += fn.help + '\n\n';
// If chainable, drop first argument from help
var args = fn.chainable ? fn.args.slice(1) : fn.args.slice();
if (!args.length) {
help += '*This function does not accept any arguments.*\n\n';
return help;
}
help += 'Argument | Accepts | Description\n';
help += '--- | --- | ---\n';
_.each(args, function (arg) {
help += arg.name + ' | *' + _.without(arg.types, 'null').join('/') + '* | ';
help += arg.help ? arg.help : '*no help available*';
help += ' \n';
});
help += '\n';
return help;
}
function createDocs() {
var help = '';
help += '## Timelion function reference\n';
help += 'This document is auto generated from the timelion code. ' +
'Do not submit pulls against this document. You want to submit a pull against something in the ' +
'`series_functions/` directory.\n\n';
help += '### Data sources\n';
help += 'Data sources can start a chain, they don\'t need to be attached to anything, but they still need to start' +
' with a `.` (dot). Data retreived from a data source can be passed into the chainable functions in the next section.\n\n';
help += _.chain(functionArray)
.filter('datasource')
.map(toDocBlock)
.value()
.join('');
help += '### Chainable functions\n';
help += 'Chainable functions can not start a chain. Somewhere before them must be a data source function. Chainable' +
' functions modify the data output directly from a data source, or from another chainable function that has a data' +
' source somewhere before it.\n\n';
help += _.chain(functionArray)
.filter('chainable')
.map(toDocBlock)
.value()
.join('');
return help;
}
return createDocs();
}());