Skip to content

Instantly share code, notes, and snippets.

@marcelduran
Created September 25, 2014 23:47
Show Gist options
  • Save marcelduran/0de136049f1ef2be1f57 to your computer and use it in GitHub Desktop.
Save marcelduran/0de136049f1ef2be1f57 to your computer and use it in GitHub Desktop.
WebPagetest-API command/options mapping to MarkDown
var map = require('./lib/mapping');
const
TPL_CMD_TITLE = '#### NAME (works for CMDS commandPLURAL)',
TPL_CMD_KEY = '-KEY, ',
TPL_CMD_PARAM = ' _\\<PARAM\\>_',
TPL_CMD_OPT = '* **KEY--NAME**PARAM: INFO';
function caps(word) {
return word[0].toUpperCase() + word.slice(1);
}
// Commands
Object.keys(map.options).forEach(function(name) {
var opt = map.options[name];
var cmds = Object.keys(map.commands).filter(function(name) {
var cmd = map.commands[name];
return cmd.options && cmd.options.indexOf(opt) > -1;
}).map(function(name) {
return '**' + name + '**';
});
var cmdsText = cmds.join(', ').replace(/,([^,]+)$/, ' and$1');
console.log(TPL_CMD_TITLE
.replace('NAME', caps(name))
.replace('CMDS', cmdsText)
.replace('PLURAL', cmds.length > 1 ? 's' : ' only')
);
Object.keys(opt).forEach(function(name) {
if (name.length === 1) return;
var o = opt[name];
console.log(TPL_CMD_OPT
.replace('KEY', o.key && TPL_CMD_KEY.replace('KEY', o.key) || '')
.replace('NAME', name)
.replace('PARAM', o.param && TPL_CMD_PARAM.replace('PARAM', o.param) || '')
.replace('INFO', o.info)
);
});
console.log('');
});
const
TPL_MTD_TITLE = '#### NAME (works for MTDS methodPLURAL)',
TPL_MTD_OPT = '* **NAME**: _TYPE_, INFO';
// Methods
Object.keys(map.options).forEach(function(name) {
if (name.length === 1) return;
var opt = map.options[name];
var cmds = Object.keys(map.commands).filter(function(name) {
var cmd = map.commands[name];
return cmd.options && cmd.options.indexOf(opt) > -1;
}).map(function(name) {
return '`' + name + '`';
});
var cmdsText = cmds.join(', ').replace(/,([^,]+)$/, ' and$1');
console.log(TPL_MTD_TITLE
.replace('NAME', caps(name))
.replace('MTDS', cmdsText)
.replace('PLURAL', cmds.length > 1 ? 's' : ' only')
);
Object.keys(opt).forEach(function(name) {
if (name.length === 1) return;
var o = opt[name];
console.log(TPL_MTD_OPT
.replace('NAME', o.name)
.replace('TYPE',
(o.bool && 'Boolean') ||
(o.param &&
(/number|percent|level|seconds|\[\d+\]/i.test(o.info) ? 'Number' :
'String'))
)
.replace('INFO', o.info)
);
});
console.log('');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment