gen-nav.js 984 B

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