gallery.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. var fs = require('fs');
  2. var globby = require('globby');
  3. const exampleMap = {};
  4. var fileList = ['Apps/Examples/*.html'];
  5. var filePaths = globby.sync(fileList);
  6. filePaths = filePaths.filter(e => e !=='Apps/Examples/index.html');
  7. filePaths.forEach(filePath => {
  8. var content = fs.readFileSync(filePath, 'utf-8');
  9. var results = /\<title\>([\s\S]*)\<\/title\>/mg.exec(content);
  10. var title = '<未能获取示例名称!>';
  11. if (results && results.length >= 2) {
  12. title = results[1];
  13. }
  14. // <meta name="xbsj-labels" content="Beginner, Showcases"></meta>
  15. // var results2 = /\<meta\sname=\"xbsj-labels\"\scontent=\"(.*)\"\>\<\/meta\>/mg.exec(content);
  16. var results2 = /\<meta\sname=\"xbsj-labels\"\scontent=\"(.*)\"\>/mg.exec(content);
  17. var labels = [];
  18. if (results2 && results2.length >= 2) {
  19. labels = results2[1].split(',').map(e => e.trim());
  20. }
  21. if (labels.length === 0) {
  22. labels.push('杂项');
  23. }
  24. labels.forEach(label => {
  25. exampleMap[label] = exampleMap[label] || [];
  26. exampleMap[label].push({
  27. title: title,
  28. url: './' + filePath.slice(14),
  29. });
  30. });
  31. });
  32. var exampleList = Object.entries(exampleMap).map(([title, list]) => ({
  33. title,
  34. list,
  35. }));
  36. var ss = 'vueApp.examples = ' + JSON.stringify(exampleList, undefined, ' ');
  37. var fd = fs.openSync('Apps/Examples/scripts/list.js', 'w+');
  38. var buffer = Buffer.from('/* This file is automatically rebuilt by the Cesium build process. */\n');
  39. // fs.writeSync(fd, buffer, 0, buffer.length, 0); //write new data
  40. fs.writeSync(fd, ss);
  41. fs.close(fd);