Index: lib/src/prism/components/prism-core.js |
diff --git a/lib/src/prism/components/prism-core.js b/lib/src/prism/components/prism-core.js |
index 542464e0844be5a07fe31e492faf49a4895e22c5..aef621f40bdb6461b2e7590828f321d030fc7d20 100644 |
--- a/lib/src/prism/components/prism-core.js |
+++ b/lib/src/prism/components/prism-core.js |
@@ -140,7 +140,8 @@ var _ = _self.Prism = { |
} |
} |
}, |
- |
+ plugins: {}, |
+ |
highlightAll: function(async, callback) { |
var elements = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'); |
@@ -172,18 +173,8 @@ var _ = _self.Prism = { |
parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; |
} |
- if (!grammar) { |
- return; |
- } |
- |
var code = element.textContent; |
- if(!code) { |
- return; |
- } |
- |
- code = code.replace(/^(?:\r?\n|\r)/,''); |
- |
var env = { |
element: element, |
language: language, |
@@ -191,13 +182,18 @@ var _ = _self.Prism = { |
code: code |
}; |
+ if (!code || !grammar) { |
+ _.hooks.run('complete', env); |
+ return; |
+ } |
+ |
_.hooks.run('before-highlight', env); |
if (async && _self.Worker) { |
var worker = new Worker(_.filename); |
worker.onmessage = function(evt) { |
- env.highlightedCode = Token.stringify(JSON.parse(evt.data), language); |
+ env.highlightedCode = evt.data; |
_.hooks.run('before-insert', env); |
@@ -205,11 +201,13 @@ var _ = _self.Prism = { |
callback && callback.call(env.element); |
_.hooks.run('after-highlight', env); |
+ _.hooks.run('complete', env); |
}; |
worker.postMessage(JSON.stringify({ |
language: env.language, |
- code: env.code |
+ code: env.code, |
+ immediateClose: true |
})); |
} |
else { |
@@ -222,6 +220,7 @@ var _ = _self.Prism = { |
callback && callback.call(element); |
_.hooks.run('after-highlight', env); |
+ _.hooks.run('complete', env); |
} |
}, |
@@ -380,7 +379,7 @@ Token.stringify = function(o, language, parent) { |
var attributes = ''; |
for (var name in env.attributes) { |
- attributes += name + '="' + (env.attributes[name] || '') + '"'; |
+ attributes += (attributes ? ' ' : '') + name + '="' + (env.attributes[name] || '') + '"'; |
} |
return '<' + env.tag + ' class="' + env.classes.join(' ') + '" ' + attributes + '>' + env.content + '</' + env.tag + '>'; |
@@ -396,10 +395,13 @@ if (!_self.document) { |
_self.addEventListener('message', function(evt) { |
var message = JSON.parse(evt.data), |
lang = message.language, |
- code = message.code; |
+ code = message.code, |
+ immediateClose = message.immediateClose; |
- _self.postMessage(JSON.stringify(_.util.encode(_.tokenize(code, _.languages[lang])))); |
- _self.close(); |
+ _self.postMessage(_.highlight(code, _.languages[lang], lang)); |
+ if (immediateClose) { |
+ _self.close(); |
+ } |
}, false); |
return _self.Prism; |
@@ -425,3 +427,8 @@ return _self.Prism; |
if (typeof module !== 'undefined' && module.exports) { |
module.exports = Prism; |
} |
+ |
+// hack for components to work correctly in node.js |
+if (typeof global !== 'undefined') { |
+ global.Prism = Prism; |
+} |