/branches/version1.x/templates/sweet/publish.js

http://jsdoc-toolkit.googlecode.com/ · JavaScript · 79 lines · 58 code · 13 blank · 8 comment · 12 complexity · 47cbf880825129aa23b582da7791b065 MD5 · raw file

  1. require("app/JsHilite.js");
  2. function publish(fileGroup, context) {
  3. var file_template = new JsPlate(context.t+"file.tmpl");
  4. // build up classname to file mapping
  5. var index = {};
  6. linkToType.classfiles = {};
  7. for (var i = 0; i < fileGroup.files.length; i++) {
  8. if (context.d) {
  9. var our_name = generateFilename(i);
  10. index[our_name] = {name: (fileGroup.files[i].filename), classes: []};
  11. for (var s = 0; s < fileGroup.files[i].symbols.length; s++) {
  12. if (fileGroup.files[i].symbols[s].isa == "CONSTRUCTOR") {
  13. index[our_name].classes.push(fileGroup.files[i].symbols[s].alias);
  14. if (our_name) linkToType.classfiles[fileGroup.files[i].symbols[s].alias] = our_name;
  15. // //fileGroup.classfiles[fileGroup.files[i].symbols[s].alias] = our_name;
  16. }
  17. }
  18. // make copy original source code with syntax hiliting
  19. var sourceFile = fileGroup.files[i].path;
  20. if (sourceFile) {
  21. var hiliter = new JsHilite(IO.readFile(sourceFile), JsDoc.opt.e);
  22. IO.saveFile(context.d, "src"+our_name, hiliter.hilite());
  23. fileGroup.files[i].source = "src"+our_name;
  24. }
  25. }
  26. }
  27. for (var i = 0; i < fileGroup.files.length; i++) {
  28. if (context.d) {
  29. var output = file_template.process(fileGroup.files[i]);
  30. IO.saveFile(context.d, generateFilename(i), output);
  31. }
  32. }
  33. var indx_template = new JsPlate(context.t+"index.tmpl");
  34. var index = indx_template.process(index);
  35. if (context.d) {
  36. IO.saveFile(context.d, "file_list.html", index);
  37. IO.copyFile(context.t+"index.html", context.d);
  38. IO.copyFile(context.t+"splash.html", context.d);
  39. IO.copyFile(context.t+"default.css", context.d);
  40. IO.copyFile(context.t+"file.gif", context.d);
  41. IO.copyFile(context.t+"overview.gif", context.d);
  42. IO.copyFile(context.t+"constructor.gif", context.d);
  43. IO.copyFile(context.t+"function.gif", context.d);
  44. IO.copyFile(context.t+"object.gif", context.d);
  45. }
  46. }
  47. function generateFilename(i) {
  48. return "_"+((i+1<10)?"0"+(i+1):(i+1))+".html"
  49. }
  50. /**
  51. Takes a string of object types and adds links if there exists
  52. any documentation files in the output for that type.
  53. @param typeString Like "Foo" or "Foo[] | Bar".
  54. */
  55. function linkToType(typeString) {
  56. var sep = /[^a-zA-Z0-9._$]+/;
  57. var types = typeString.split(sep);
  58. for (var i = 0; i < types.length; i++) {
  59. var link = linkToType.classfiles[types[i]];
  60. if (link) {
  61. var re = new RegExp('(^|[^a-zA-Z0-9._$])'+types[i]+'($|[^a-zA-Z0-9._$])');
  62. typeString = typeString.replace(re, "$1<a href=\""+link+"#"+types[i]+"\">"+types[i]+"</a>$2", "g");
  63. }
  64. }
  65. return typeString;
  66. }