UNPKG

hexo

Version:

A fast, simple & powerful blog framework, powered by Node.js.

79 lines (60 loc) 1.43 kB
var colors = require('colors'); module.exports = function(args, callback){ var keys = Object.keys(hexo.route.routes); if (args.json){ console.log(keys); return callback(); } var routes = {}; keys.forEach(function(key){ setProperty(routes, key, {}); }); console.log('.'.grey); printTree(routes); console.log('\nTotal: ' + keys.length); callback(); }; var setProperty = function(obj, key, data){ var split = key.split('/'), cursor = obj; for (var i = 0, len = split.length - 1; i < len; i++){ var name = split[i]; cursor = cursor[name] = cursor[name] || {}; } cursor[split[i]] = data; }; var printTree = function(obj, indent){ indent = indent || 0; var keys = Object.keys(obj); keys.sort(function(a, b){ if (a < b){ return -1; } else if (a > b){ return 1; } else { return 0; } }); for (var i = 0, len = keys.length; i < len; i++){ var key = keys[i], child = obj[key], childLength = Object.keys(child).length; var str = ''; for (var j = 0; j < indent; j++){ str += '| '.grey; } if (i === len - 1 && !childLength){ str += '└── '.grey; } else { str += '├── '.grey; } str += key; if (childLength){ str += (' (' + childLength + ')').grey; } console.log(str); if (childLength){ printTree(child, indent + 1); } } };