added site files
This commit is contained in:
parent
a6f70a6c78
commit
329148c253
253 changed files with 30486 additions and 0 deletions
90
EnlighterJS/Source/Util/Helper.js
Normal file
90
EnlighterJS/Source/Util/Helper.js
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
---
|
||||
name: Helper
|
||||
description: Helper to initialize multiple Enlighter instances on your page as well as code-groups
|
||||
|
||||
license: MIT-style X11 License
|
||||
|
||||
authors:
|
||||
- Andi Dittrich
|
||||
|
||||
requires:
|
||||
- Core/1.4.5
|
||||
|
||||
provides: [EnlighterJS.Util.Helper]
|
||||
...
|
||||
*/
|
||||
EJS.Util.Helper = (function(elements, options){
|
||||
// break if no elements are selected/found
|
||||
if (elements == null || (elements.length && elements.length == 0)){
|
||||
return;
|
||||
}
|
||||
|
||||
// defaults
|
||||
options = options || {};
|
||||
|
||||
// element grouping disabled?
|
||||
if (options.grouping && options.grouping===false){
|
||||
// highlight all elements
|
||||
elements.enlight(options);
|
||||
|
||||
// use grouping
|
||||
}else{
|
||||
// get separated groups and single elements
|
||||
var groups = {};
|
||||
var ungrouped = [];
|
||||
|
||||
// group elements
|
||||
Array.each(elements, function(el){
|
||||
// extract group name
|
||||
var groupName = el.get('data-enlighter-group');
|
||||
|
||||
// build element tree
|
||||
if (groupName){
|
||||
if (groups[groupName]){
|
||||
groups[groupName].push(el);
|
||||
}else{
|
||||
groups[groupName] = [el];
|
||||
}
|
||||
}else{
|
||||
ungrouped.push(el);
|
||||
}
|
||||
});
|
||||
|
||||
// highlight single elements (non grouped)
|
||||
ungrouped.each(function(el){
|
||||
el.enlight(options);
|
||||
});
|
||||
|
||||
// create & highlight groups
|
||||
Object.each(groups, function(obj){
|
||||
// copy options
|
||||
var localoptions = Object.clone(options);
|
||||
|
||||
// force theme defined within options (all group members should have the same theme as group-leader)
|
||||
localoptions.forceTheme = true;
|
||||
|
||||
// get group-leader theme
|
||||
localoptions.theme = obj[0].get('data-enlighter-theme') || options.theme || 'Enlighter';
|
||||
|
||||
// create new tab pane
|
||||
var tabpane = new EJS.UI.TabPane(localoptions.theme);
|
||||
|
||||
// put enlighted objects into the tabpane
|
||||
Array.each(obj, function(el, index){
|
||||
// create new tab - set title with fallback
|
||||
var container = tabpane.addTab(el.get('data-enlighter-title') || el.get('data-enlighter-language') || localoptions.language);
|
||||
|
||||
// run enlighter
|
||||
(new EJS(el, localoptions, container)).enlight(true);
|
||||
|
||||
}.bind(this));
|
||||
|
||||
// select first tab (group-leader)
|
||||
tabpane.getContainer().inject(obj[0], 'before');
|
||||
tabpane.selectTab(0);
|
||||
|
||||
}.bind(this));
|
||||
}
|
||||
});
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue