Skip to content

Commit 393ab16

Browse files
RunDevelopmentmAAdhaTTah
authored andcommitted
Call insert-before hook properly (#1709)
Fixes #1706 (also includes a demo). The problem was that the `insert-before` hook was not called if `grammar` is undefined. This also fixes that `callback` was not called in that case and that `env` of the `complete` hook did not have a `highlightedCode` property. All other hooks are unchanged. The `insert-before` hook is only used by the Command line plugin, so there should be no other side effects.
1 parent 6ec71e0 commit 393ab16

File tree

3 files changed

+41
-53
lines changed

3 files changed

+41
-53
lines changed

components/prism-core.js

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -212,33 +212,37 @@ var _ = _self.Prism = {
212212
code: code
213213
};
214214

215+
var insertHighlightedCode = function (highlightedCode) {
216+
env.highlightedCode = highlightedCode;
217+
218+
_.hooks.run('before-insert', env);
219+
220+
env.element.innerHTML = env.highlightedCode;
221+
222+
_.hooks.run('after-highlight', env);
223+
_.hooks.run('complete', env);
224+
callback && callback.call(env.element);
225+
}
226+
215227
_.hooks.run('before-sanity-check', env);
216228

217-
if (!env.code || !env.grammar) {
218-
if (env.code) {
219-
_.hooks.run('before-highlight', env);
220-
env.element.textContent = env.code;
221-
_.hooks.run('after-highlight', env);
222-
}
229+
if (!env.code) {
223230
_.hooks.run('complete', env);
224231
return;
225232
}
226233

227234
_.hooks.run('before-highlight', env);
228235

236+
if (!env.grammar) {
237+
insertHighlightedCode(_.util.encode(env.code));
238+
return;
239+
}
240+
229241
if (async && _self.Worker) {
230242
var worker = new Worker(_.filename);
231243

232244
worker.onmessage = function(evt) {
233-
env.highlightedCode = evt.data;
234-
235-
_.hooks.run('before-insert', env);
236-
237-
env.element.innerHTML = env.highlightedCode;
238-
239-
_.hooks.run('after-highlight', env);
240-
_.hooks.run('complete', env);
241-
callback && callback.call(env.element);
245+
insertHighlightedCode(evt.data);
242246
};
243247

244248
worker.postMessage(JSON.stringify({
@@ -248,17 +252,7 @@ var _ = _self.Prism = {
248252
}));
249253
}
250254
else {
251-
env.highlightedCode = _.highlight(env.code, env.grammar, env.language);
252-
253-
_.hooks.run('before-insert', env);
254-
255-
env.element.innerHTML = env.highlightedCode;
256-
257-
_.hooks.run('after-highlight', env);
258-
259-
_.hooks.run('complete', env);
260-
261-
callback && callback.call(element);
255+
insertHighlightedCode(_.highlight(env.code, env.grammar, env.language));
262256
}
263257
},
264258

components/prism-core.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

prism.js

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -217,33 +217,37 @@ var _ = _self.Prism = {
217217
code: code
218218
};
219219

220+
var insertHighlightedCode = function (highlightedCode) {
221+
env.highlightedCode = highlightedCode;
222+
223+
_.hooks.run('before-insert', env);
224+
225+
env.element.innerHTML = env.highlightedCode;
226+
227+
_.hooks.run('after-highlight', env);
228+
_.hooks.run('complete', env);
229+
callback && callback.call(env.element);
230+
}
231+
220232
_.hooks.run('before-sanity-check', env);
221233

222-
if (!env.code || !env.grammar) {
223-
if (env.code) {
224-
_.hooks.run('before-highlight', env);
225-
env.element.textContent = env.code;
226-
_.hooks.run('after-highlight', env);
227-
}
234+
if (!env.code) {
228235
_.hooks.run('complete', env);
229236
return;
230237
}
231238

232239
_.hooks.run('before-highlight', env);
233240

241+
if (!env.grammar) {
242+
insertHighlightedCode(_.util.encode(env.code));
243+
return;
244+
}
245+
234246
if (async && _self.Worker) {
235247
var worker = new Worker(_.filename);
236248

237249
worker.onmessage = function(evt) {
238-
env.highlightedCode = evt.data;
239-
240-
_.hooks.run('before-insert', env);
241-
242-
env.element.innerHTML = env.highlightedCode;
243-
244-
_.hooks.run('after-highlight', env);
245-
_.hooks.run('complete', env);
246-
callback && callback.call(env.element);
250+
insertHighlightedCode(evt.data);
247251
};
248252

249253
worker.postMessage(JSON.stringify({
@@ -253,17 +257,7 @@ var _ = _self.Prism = {
253257
}));
254258
}
255259
else {
256-
env.highlightedCode = _.highlight(env.code, env.grammar, env.language);
257-
258-
_.hooks.run('before-insert', env);
259-
260-
env.element.innerHTML = env.highlightedCode;
261-
262-
_.hooks.run('after-highlight', env);
263-
264-
_.hooks.run('complete', env);
265-
266-
callback && callback.call(element);
260+
insertHighlightedCode(_.highlight(env.code, env.grammar, env.language));
267261
}
268262
},
269263

0 commit comments

Comments
 (0)