colorize.js 834 B

1234567891011121314151617181920212223242526272829
  1. CodeMirror.colorize = (function() {
  2. var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/;
  3. function textContent(node, out) {
  4. if (node.nodeType == 3) return out.push(node.nodeValue);
  5. for (var ch = node.firstChild; ch; ch = ch.nextSibling) {
  6. textContent(ch, out);
  7. if (isBlock.test(node.nodeType)) out.push("\n");
  8. }
  9. }
  10. return function(collection, defaultMode) {
  11. if (!collection) collection = document.body.getElementsByTagName("pre");
  12. for (var i = 0; i < collection.length; ++i) {
  13. var node = collection[i];
  14. var mode = node.getAttribute("data-lang") || defaultMode;
  15. if (!mode) continue;
  16. var text = [];
  17. textContent(node, text);
  18. node.innerHTML = "";
  19. CodeMirror.runMode(text.join(""), mode, node);
  20. node.className += " cm-s-default";
  21. }
  22. };
  23. })();