5 changed files with 12 additions and 146 deletions
@ -1,62 +0,0 @@ |
|||||||
/** |
|
||||||
* Simple Event Bus |
|
||||||
* |
|
||||||
* Allows to easily hook into various page rendering / markdown parsing stages with custom modules |
|
||||||
* |
|
||||||
* |
|
||||||
* High Level API: |
|
||||||
* |
|
||||||
* // Subscribe
|
|
||||||
* events.subscribe(eventName:String, eventHandler:Function) |
|
||||||
* |
|
||||||
* // Publish
|
|
||||||
* events.publish(eventName:String, optionalArgument1, optionalArgument2, ..., optionalArgumentN); |
|
||||||
* |
|
||||||
* |
|
||||||
* Sample Usage: |
|
||||||
* |
|
||||||
* event.subscribe('markdown:parsed', function () { |
|
||||||
* console.log('Markdown Parsed'); |
|
||||||
* }); |
|
||||||
* |
|
||||||
* event.subscribe('markdown:parsed', function (title) { |
|
||||||
* console.log('Markdown Parsed For Document: ' + title); |
|
||||||
* }); |
|
||||||
* |
|
||||||
* events.publish('markdown:parsed', 'SampleDocument.md'); |
|
||||||
* // Markdown Parsed
|
|
||||||
* // Markdown Parsed For Document: SampleDocument.md
|
|
||||||
* |
|
||||||
*/ |
|
||||||
(function (global) { |
|
||||||
|
|
||||||
var eventBus = { |
|
||||||
subscribers: [], |
|
||||||
}; |
|
||||||
|
|
||||||
global.events = global.events || { |
|
||||||
|
|
||||||
subscribe: function (eventName, eventHandler) { |
|
||||||
// Initialize an array of event listeners if doesn't exist already
|
|
||||||
eventBus.subscribers[eventName] = eventBus.subscribers[eventName] || []; |
|
||||||
|
|
||||||
eventBus.subscribers[eventName].push(eventHandler); |
|
||||||
}, |
|
||||||
|
|
||||||
publish: function (eventName /*, arg1, arg2, ..., argN */) { |
|
||||||
var eventArguments = [].slice.call(arguments, 1); |
|
||||||
|
|
||||||
if (eventArguments.length) { |
|
||||||
console.log('[Hooks] "%s" with args %O', eventName, eventArguments); |
|
||||||
} else { |
|
||||||
console.log('[Hooks] "%s"', eventName); |
|
||||||
} |
|
||||||
|
|
||||||
// Call event handlers with given attributes
|
|
||||||
(eventBus.subscribers[eventName] || []).forEach(function (eventHandler) { |
|
||||||
eventHandler.apply(null, eventArguments); |
|
||||||
}); |
|
||||||
}, |
|
||||||
|
|
||||||
}; |
|
||||||
}(window)); |
|
||||||
@ -1,67 +0,0 @@ |
|||||||
// jscs:disable maximumLineLength
|
|
||||||
|
|
||||||
/** |
|
||||||
* Highlight Module |
|
||||||
* |
|
||||||
* |
|
||||||
* High Level API: |
|
||||||
* |
|
||||||
* api.init() |
|
||||||
* |
|
||||||
* |
|
||||||
* Hooks To: |
|
||||||
* |
|
||||||
* 'document:loaded' ~> highlight.init(); |
|
||||||
* |
|
||||||
*/ |
|
||||||
(function (global) { |
|
||||||
|
|
||||||
function loadInitialScriptsAndStyles() { |
|
||||||
var link = |
|
||||||
document.createElement('link'); |
|
||||||
|
|
||||||
var mainScript = |
|
||||||
document.createElement('script'); |
|
||||||
|
|
||||||
link.rel = |
|
||||||
'stylesheet'; |
|
||||||
|
|
||||||
link.href = |
|
||||||
'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/styles/zenburn.min.css'; |
|
||||||
|
|
||||||
mainScript.src = |
|
||||||
'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/highlight.min.js'; |
|
||||||
|
|
||||||
// On main script load, configure marked
|
|
||||||
mainScript.addEventListener('load', function () { |
|
||||||
marked.setOptions({ |
|
||||||
langPrefix: 'hljs lang-', |
|
||||||
highlight: function (code) { |
|
||||||
return hljs.highlightAuto(code).value; |
|
||||||
}, |
|
||||||
}); |
|
||||||
|
|
||||||
}); |
|
||||||
|
|
||||||
// Extend marked.js on edit page only
|
|
||||||
if ('marked' in global) { |
|
||||||
document.body.appendChild(mainScript); |
|
||||||
} |
|
||||||
|
|
||||||
// Preview page requires scripts only
|
|
||||||
document.head.appendChild(link); |
|
||||||
} |
|
||||||
|
|
||||||
// High Level API
|
|
||||||
var api = { |
|
||||||
init: function () { |
|
||||||
loadInitialScriptsAndStyles(); |
|
||||||
}, |
|
||||||
}; |
|
||||||
|
|
||||||
// Hooks
|
|
||||||
if ('events' in global) { |
|
||||||
events.subscribe('document:loaded', api.init); |
|
||||||
} |
|
||||||
|
|
||||||
}(window)); |
|
||||||
Loading…
Reference in new issue