export.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. require(["dojo/node!fs", "dojox/json/ref", "dojo/_base/kernel"], function(fs, ref, kernel){
  2. var nodeRequire = kernel.global.require && kernel.global.require.nodeRequire;
  3. var HIGHLIGHT_DIR = dojo.config.highlightJsDir;
  4. hljs = nodeRequire(HIGHLIGHT_DIR + "highlight.js");
  5. var refs = [];
  6. function regExpsRep(l,p) {
  7. refs.push(l);
  8. for (x in {"begin":1, "end":2, "lexemes":3, "illegal":4}) {
  9. if (l[x] && l[x].source) {
  10. l[x] = l[x].source;
  11. }
  12. }
  13. for (var i in l) {
  14. var doneIt = false;
  15. for (var j=0; j<refs.length; j++) {
  16. if (refs[j] == l[i]) {
  17. doneIt = true;
  18. }
  19. }
  20. if (l[i] && typeof l[i] == 'object' && !doneIt) {
  21. regExpsRep(l[i], l[i]);
  22. }
  23. }
  24. }
  25. function patch(s) {
  26. return s.replace(/\\u([0-9A-Fa-f]+)/g, "\\x{$1}");
  27. }
  28. function exportLang(lang) {
  29. var x = nodeRequire(HIGHLIGHT_DIR + "languages/" + lang + ".js");
  30. var l = x(hljs);
  31. refs = [];
  32. regExpsRep(l);
  33. hljs.registerLanguage(lang, x);
  34. console.log(lang);
  35. console.log(patch(dojox.json.ref.toJson(l)));
  36. }
  37. fs.readdir(HIGHLIGHT_DIR + "languages/",function(err,files){
  38. if(err) {
  39. throw err;
  40. }
  41. files.forEach(function(file){
  42. exportLang(file.replace(/\.js$/, ""));
  43. });
  44. });
  45. });