gen-nav.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env node
  2. const path = require('path');
  3. const proc = require('child_process');
  4. const startCase = require('lodash.startcase');
  5. const baseDir = process.argv[2];
  6. const files = proc.execFileSync(
  7. 'find', [baseDir, '-type', 'f'], { encoding: 'utf8' },
  8. ).split('\n').filter(s => s !== '');
  9. console.log('.API');
  10. function getPageTitle (directory) {
  11. switch (directory) {
  12. case 'metatx':
  13. return 'Meta Transactions';
  14. case 'common':
  15. return 'Common (Tokens)';
  16. default:
  17. return startCase(directory);
  18. }
  19. }
  20. const links = files.map((file) => {
  21. const doc = file.replace(baseDir, '');
  22. const title = path.parse(file).name;
  23. return {
  24. xref: `* xref:${doc}[${getPageTitle(title)}]`,
  25. title,
  26. };
  27. });
  28. // Case-insensitive sort based on titles (so 'token/ERC20' gets sorted as 'erc20')
  29. const sortedLinks = links.sort(function (a, b) {
  30. return a.title.toLowerCase().localeCompare(b.title.toLowerCase(), undefined, { numeric: true });
  31. });
  32. for (const link of sortedLinks) {
  33. console.log(link.xref);
  34. }