/node_modules/mongoose/website.js

https://bitbucket.org/coleman333/smartsite · JavaScript · 86 lines · 74 code · 11 blank · 1 comment · 13 complexity · b8cf0ace159c7b770d400b4a2878cc47 MD5 · raw file

  1. var fs = require('fs');
  2. var jade = require('jade');
  3. var package = require('./package');
  4. var linktype = require('./docs/helpers/linktype');
  5. var href = require('./docs/helpers/href');
  6. var klass = require('./docs/helpers/klass');
  7. const markdown = require('marked');
  8. const highlight = require('highlight.js');
  9. markdown.setOptions({
  10. highlight: function(code) {
  11. return highlight.highlight('JavaScript', code).value;
  12. }
  13. });
  14. jade.filters.markdown = markdown;
  15. function getVersion() {
  16. return require('./package.json').version;
  17. }
  18. function getLatestLegacyVersion(startsWith) {
  19. var hist = fs.readFileSync('./History.md', 'utf8').replace(/\r/g, '\n').split('\n');
  20. for (var i = 0; i < hist.length; ++i) {
  21. var line = (hist[i] || '').trim();
  22. if (!line) {
  23. continue;
  24. }
  25. var match = /^\s*([^\s]+)\s/.exec(line);
  26. if (match && match[1] && match[1].startsWith(startsWith)) {
  27. return match[1];
  28. }
  29. }
  30. throw new Error('no match found');
  31. }
  32. // use last release
  33. package.version = getVersion();
  34. package.latest4x = getLatestLegacyVersion('4.');
  35. package.latest38x = getLatestLegacyVersion('3.8');
  36. var filemap = require('./docs/source');
  37. var files = Object.keys(filemap);
  38. function jadeify(filename, options, newfile) {
  39. options = options || {};
  40. options.package = package;
  41. options.linktype = linktype;
  42. options.href = href;
  43. options.klass = klass;
  44. jade.renderFile(filename, options, function(err, str) {
  45. if (err) {
  46. console.error(err.stack);
  47. return;
  48. }
  49. newfile = newfile || filename.replace('.jade', '.html');
  50. fs.writeFile(newfile, str, function(err) {
  51. if (err) {
  52. console.error('could not write', err.stack);
  53. } else {
  54. console.log('%s : rendered ', new Date, newfile);
  55. }
  56. });
  57. });
  58. }
  59. files.forEach(function(file) {
  60. var filename = __dirname + '/' + file;
  61. jadeify(filename, filemap[file]);
  62. if (process.argv[2] === '--watch') {
  63. fs.watchFile(filename, {interval: 1000}, function(cur, prev) {
  64. if (cur.mtime > prev.mtime) {
  65. jadeify(filename, filemap[file]);
  66. }
  67. });
  68. }
  69. });
  70. var acquit = require('./docs/source/acquit');
  71. var acquitFiles = Object.keys(acquit);
  72. acquitFiles.forEach(function(file) {
  73. var filename = __dirname + '/docs/acquit.jade';
  74. jadeify(filename, acquit[file], __dirname + '/docs/' + file);
  75. });