Added phaser build and hellophaser sample
This commit is contained in:
1429
docs/scripts/URI.js
Normal file
1429
docs/scripts/URI.js
Normal file
File diff suppressed because it is too large
Load Diff
165
docs/scripts/bootstrap-dropdown.js
vendored
Normal file
165
docs/scripts/bootstrap-dropdown.js
vendored
Normal file
@@ -0,0 +1,165 @@
|
||||
/* ============================================================
|
||||
* bootstrap-dropdown.js v2.3.1
|
||||
* http://twitter.github.com/bootstrap/javascript.html#dropdowns
|
||||
* ============================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ============================================================ */
|
||||
|
||||
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* DROPDOWN CLASS DEFINITION
|
||||
* ========================= */
|
||||
|
||||
var toggle = '[data-toggle=dropdown]'
|
||||
, Dropdown = function (element) {
|
||||
var $el = $(element).on('click.dropdown.data-api', this.toggle)
|
||||
$('html').on('click.dropdown.data-api', function () {
|
||||
$el.parent().removeClass('open')
|
||||
})
|
||||
}
|
||||
|
||||
Dropdown.prototype = {
|
||||
|
||||
constructor: Dropdown
|
||||
|
||||
, toggle: function (e) {
|
||||
var $this = $(this)
|
||||
, $parent
|
||||
, isActive
|
||||
|
||||
if ($this.is('.disabled, :disabled')) return
|
||||
|
||||
$parent = getParent($this)
|
||||
|
||||
isActive = $parent.hasClass('open')
|
||||
|
||||
clearMenus()
|
||||
|
||||
if (!isActive) {
|
||||
$parent.toggleClass('open')
|
||||
}
|
||||
|
||||
$this.focus()
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
, keydown: function (e) {
|
||||
var $this
|
||||
, $items
|
||||
, $active
|
||||
, $parent
|
||||
, isActive
|
||||
, index
|
||||
|
||||
if (!/(38|40|27)/.test(e.keyCode)) return
|
||||
|
||||
$this = $(this)
|
||||
|
||||
e.preventDefault()
|
||||
e.stopPropagation()
|
||||
|
||||
if ($this.is('.disabled, :disabled')) return
|
||||
|
||||
$parent = getParent($this)
|
||||
|
||||
isActive = $parent.hasClass('open')
|
||||
|
||||
if (!isActive || (isActive && e.keyCode == 27)) {
|
||||
if (e.which == 27) $parent.find(toggle).focus()
|
||||
return $this.click()
|
||||
}
|
||||
|
||||
$items = $('[role=menu] li:not(.divider):visible a', $parent)
|
||||
|
||||
if (!$items.length) return
|
||||
|
||||
index = $items.index($items.filter(':focus'))
|
||||
|
||||
if (e.keyCode == 38 && index > 0) index-- // up
|
||||
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
|
||||
if (!~index) index = 0
|
||||
|
||||
$items
|
||||
.eq(index)
|
||||
.focus()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function clearMenus() {
|
||||
$(toggle).each(function () {
|
||||
getParent($(this)).removeClass('open')
|
||||
})
|
||||
}
|
||||
|
||||
function getParent($this) {
|
||||
var selector = $this.attr('data-target')
|
||||
, $parent
|
||||
|
||||
if (!selector) {
|
||||
selector = $this.attr('href')
|
||||
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||
}
|
||||
|
||||
$parent = selector && $(selector)
|
||||
|
||||
if (!$parent || !$parent.length) $parent = $this.parent()
|
||||
|
||||
return $parent
|
||||
}
|
||||
|
||||
|
||||
/* DROPDOWN PLUGIN DEFINITION
|
||||
* ========================== */
|
||||
|
||||
var old = $.fn.dropdown
|
||||
|
||||
$.fn.dropdown = function (option) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('dropdown')
|
||||
if (!data) $this.data('dropdown', (data = new Dropdown(this)))
|
||||
if (typeof option == 'string') data[option].call($this)
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.dropdown.Constructor = Dropdown
|
||||
|
||||
|
||||
/* DROPDOWN NO CONFLICT
|
||||
* ==================== */
|
||||
|
||||
$.fn.dropdown.noConflict = function () {
|
||||
$.fn.dropdown = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* APPLY TO STANDARD DROPDOWN ELEMENTS
|
||||
* =================================== */
|
||||
|
||||
$(document)
|
||||
.on('click.dropdown.data-api', clearMenus)
|
||||
.on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
|
||||
.on('click.dropdown-menu', function (e) { e.stopPropagation() })
|
||||
.on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
|
||||
.on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
|
||||
|
||||
}(window.jQuery);
|
||||
144
docs/scripts/bootstrap-tab.js
vendored
Normal file
144
docs/scripts/bootstrap-tab.js
vendored
Normal file
@@ -0,0 +1,144 @@
|
||||
/* ========================================================
|
||||
* bootstrap-tab.js v2.3.0
|
||||
* http://twitter.github.com/bootstrap/javascript.html#tabs
|
||||
* ========================================================
|
||||
* Copyright 2012 Twitter, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* ======================================================== */
|
||||
|
||||
|
||||
!function ($) {
|
||||
|
||||
"use strict"; // jshint ;_;
|
||||
|
||||
|
||||
/* TAB CLASS DEFINITION
|
||||
* ==================== */
|
||||
|
||||
var Tab = function (element) {
|
||||
this.element = $(element)
|
||||
}
|
||||
|
||||
Tab.prototype = {
|
||||
|
||||
constructor: Tab
|
||||
|
||||
, show: function () {
|
||||
var $this = this.element
|
||||
, $ul = $this.closest('ul:not(.dropdown-menu)')
|
||||
, selector = $this.attr('data-target')
|
||||
, previous
|
||||
, $target
|
||||
, e
|
||||
|
||||
if (!selector) {
|
||||
selector = $this.attr('href')
|
||||
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
|
||||
}
|
||||
|
||||
if ( $this.parent('li').hasClass('active') ) return
|
||||
|
||||
previous = $ul.find('.active:last a')[0]
|
||||
|
||||
e = $.Event('show', {
|
||||
relatedTarget: previous
|
||||
})
|
||||
|
||||
$this.trigger(e)
|
||||
|
||||
if (e.isDefaultPrevented()) return
|
||||
|
||||
$target = $(selector)
|
||||
|
||||
this.activate($this.parent('li'), $ul)
|
||||
this.activate($target, $target.parent(), function () {
|
||||
$this.trigger({
|
||||
type: 'shown'
|
||||
, relatedTarget: previous
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
, activate: function ( element, container, callback) {
|
||||
var $active = container.find('> .active')
|
||||
, transition = callback
|
||||
&& $.support.transition
|
||||
&& $active.hasClass('fade')
|
||||
|
||||
function next() {
|
||||
$active
|
||||
.removeClass('active')
|
||||
.find('> .dropdown-menu > .active')
|
||||
.removeClass('active')
|
||||
|
||||
element.addClass('active')
|
||||
|
||||
if (transition) {
|
||||
element[0].offsetWidth // reflow for transition
|
||||
element.addClass('in')
|
||||
} else {
|
||||
element.removeClass('fade')
|
||||
}
|
||||
|
||||
if ( element.parent('.dropdown-menu') ) {
|
||||
element.closest('li.dropdown').addClass('active')
|
||||
}
|
||||
|
||||
callback && callback()
|
||||
}
|
||||
|
||||
transition ?
|
||||
$active.one($.support.transition.end, next) :
|
||||
next()
|
||||
|
||||
$active.removeClass('in')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* TAB PLUGIN DEFINITION
|
||||
* ===================== */
|
||||
|
||||
var old = $.fn.tab
|
||||
|
||||
$.fn.tab = function ( option ) {
|
||||
return this.each(function () {
|
||||
var $this = $(this)
|
||||
, data = $this.data('tab')
|
||||
if (!data) $this.data('tab', (data = new Tab(this)))
|
||||
if (typeof option == 'string') data[option]()
|
||||
})
|
||||
}
|
||||
|
||||
$.fn.tab.Constructor = Tab
|
||||
|
||||
|
||||
/* TAB NO CONFLICT
|
||||
* =============== */
|
||||
|
||||
$.fn.tab.noConflict = function () {
|
||||
$.fn.tab = old
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
/* TAB DATA-API
|
||||
* ============ */
|
||||
|
||||
$(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
|
||||
e.preventDefault()
|
||||
$(this).tab('show')
|
||||
})
|
||||
|
||||
}(window.jQuery);
|
||||
130
docs/scripts/jquery.localScroll.js
Normal file
130
docs/scripts/jquery.localScroll.js
Normal file
@@ -0,0 +1,130 @@
|
||||
/*!
|
||||
* jQuery.LocalScroll
|
||||
* Copyright (c) 2007-2013 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
|
||||
* Dual licensed under MIT and GPL.
|
||||
* http://flesler.blogspot.com/2007/10/jquerylocalscroll-10.html
|
||||
* @author Ariel Flesler
|
||||
* @version 1.2.8
|
||||
*
|
||||
* @id jQuery.fn.localScroll
|
||||
* @param {Object} settings Hash of settings, it is passed in to jQuery.ScrollTo, none is required.
|
||||
* @return {jQuery} Returns the same jQuery object, for chaining.
|
||||
*
|
||||
* @example $('ul.links').localScroll();
|
||||
*
|
||||
* @example $('ul.links').localScroll({ filter:'.animated', duration:400, axis:'x' });
|
||||
*
|
||||
* @example $.localScroll({ target:'#pane', axis:'xy', queue:true, event:'mouseover' });
|
||||
*
|
||||
* Notes:
|
||||
* - The plugin requires jQuery.ScrollTo.
|
||||
* - The hash of settings, is passed to jQuery.ScrollTo, so the settings are valid for that plugin as well.
|
||||
* - jQuery.localScroll can be used if the desired links, are all over the document, it accepts the same settings.
|
||||
* - If the setting 'lazy' is set to true, then the binding will still work for later added anchors.
|
||||
* - If onBefore returns false, the event is ignored.
|
||||
*/
|
||||
;(function( $ ){
|
||||
var URI = location.href.replace(/#.*/,''); // local url without hash
|
||||
|
||||
var $localScroll = $.localScroll = function( settings ){
|
||||
$('body').localScroll( settings );
|
||||
};
|
||||
|
||||
// Many of these defaults, belong to jQuery.ScrollTo, check it's demo for an example of each option.
|
||||
// @see http://flesler.demos.com/jquery/scrollTo/
|
||||
// The defaults are public and can be overriden.
|
||||
$localScroll.defaults = {
|
||||
duration:1000, // How long to animate.
|
||||
axis:'y', // Which of top and left should be modified.
|
||||
event:'click', // On which event to react.
|
||||
stop:true, // Avoid queuing animations
|
||||
target: window, // What to scroll (selector or element). The whole window by default.
|
||||
reset: true // Used by $.localScroll.hash. If true, elements' scroll is resetted before actual scrolling
|
||||
/*
|
||||
lock:false, // ignore events if already animating
|
||||
lazy:false, // if true, links can be added later, and will still work.
|
||||
filter:null, // filter some anchors out of the matched elements.
|
||||
hash: false // if true, the hash of the selected link, will appear on the address bar.
|
||||
*/
|
||||
};
|
||||
|
||||
// If the URL contains a hash, it will scroll to the pointed element
|
||||
$localScroll.hash = function( settings ){
|
||||
if( location.hash ){
|
||||
settings = $.extend( {}, $localScroll.defaults, settings );
|
||||
settings.hash = false; // can't be true
|
||||
|
||||
if( settings.reset ){
|
||||
var d = settings.duration;
|
||||
delete settings.duration;
|
||||
$(settings.target).scrollTo( 0, settings );
|
||||
settings.duration = d;
|
||||
}
|
||||
scroll( 0, location, settings );
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.localScroll = function( settings ){
|
||||
settings = $.extend( {}, $localScroll.defaults, settings );
|
||||
|
||||
return settings.lazy ?
|
||||
// use event delegation, more links can be added later.
|
||||
this.bind( settings.event, function( e ){
|
||||
// Could use closest(), but that would leave out jQuery -1.3.x
|
||||
var a = $([e.target, e.target.parentNode]).filter(filter)[0];
|
||||
// if a valid link was clicked
|
||||
if( a )
|
||||
scroll( e, a, settings ); // do scroll.
|
||||
}) :
|
||||
// bind concretely, to each matching link
|
||||
this.find('a,area')
|
||||
.filter( filter ).bind( settings.event, function(e){
|
||||
scroll( e, this, settings );
|
||||
}).end()
|
||||
.end();
|
||||
|
||||
function filter(){// is this a link that points to an anchor and passes a possible filter ? href is checked to avoid a bug in FF.
|
||||
return !!this.href && !!this.hash && this.href.replace(this.hash,'') == URI && (!settings.filter || $(this).is( settings.filter ));
|
||||
};
|
||||
};
|
||||
|
||||
function scroll( e, link, settings ){
|
||||
var id = link.hash.slice(1),
|
||||
elem = document.getElementById(id) || document.getElementsByName(id)[0];
|
||||
|
||||
if ( !elem )
|
||||
return;
|
||||
|
||||
if( e )
|
||||
e.preventDefault();
|
||||
|
||||
var $target = $( settings.target );
|
||||
|
||||
if( settings.lock && $target.is(':animated') ||
|
||||
settings.onBefore && settings.onBefore(e, elem, $target) === false )
|
||||
return;
|
||||
|
||||
if( settings.stop )
|
||||
$target._scrollable().stop(true); // remove all its animations
|
||||
|
||||
if( settings.hash ){
|
||||
var attr = elem.id == id ? 'id' : 'name',
|
||||
$a = $('<a> </a>').attr(attr, id).css({
|
||||
position:'absolute',
|
||||
top: $(window).scrollTop(),
|
||||
left: $(window).scrollLeft()
|
||||
});
|
||||
|
||||
elem[attr] = '';
|
||||
$('body').prepend($a);
|
||||
location = link.hash;
|
||||
$a.remove();
|
||||
elem[attr] = id;
|
||||
}
|
||||
|
||||
$target
|
||||
.scrollTo( elem, settings ) // do scroll
|
||||
.trigger('notify.serialScroll',[elem]); // notify serialScroll about this change
|
||||
};
|
||||
|
||||
})( jQuery );
|
||||
3522
docs/scripts/jquery.min.js
vendored
Normal file
3522
docs/scripts/jquery.min.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
217
docs/scripts/jquery.scrollTo.js
Normal file
217
docs/scripts/jquery.scrollTo.js
Normal file
@@ -0,0 +1,217 @@
|
||||
/*!
|
||||
* jQuery.ScrollTo
|
||||
* Copyright (c) 2007-2013 Ariel Flesler - aflesler<a>gmail<d>com | http://flesler.blogspot.com
|
||||
* Dual licensed under MIT and GPL.
|
||||
*
|
||||
* @projectDescription Easy element scrolling using jQuery.
|
||||
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
|
||||
* @author Ariel Flesler
|
||||
* @version 1.4.5
|
||||
*
|
||||
* @id jQuery.scrollTo
|
||||
* @id jQuery.fn.scrollTo
|
||||
* @param {String, Number, DOMElement, jQuery, Object} target Where to scroll the matched elements.
|
||||
* The different options for target are:
|
||||
* - A number position (will be applied to all axes).
|
||||
* - A string position ('44', '100px', '+=90', etc ) will be applied to all axes
|
||||
* - A jQuery/DOM element ( logically, child of the element to scroll )
|
||||
* - A string selector, that will be relative to the element to scroll ( 'li:eq(2)', etc )
|
||||
* - A hash { top:x, left:y }, x and y can be any kind of number/string like above.
|
||||
* - A percentage of the container's dimension/s, for example: 50% to go to the middle.
|
||||
* - The string 'max' for go-to-end.
|
||||
* @param {Number, Function} duration The OVERALL length of the animation, this argument can be the settings object instead.
|
||||
* @param {Object,Function} settings Optional set of settings or the onAfter callback.
|
||||
* @option {String} axis Which axis must be scrolled, use 'x', 'y', 'xy' or 'yx'.
|
||||
* @option {Number, Function} duration The OVERALL length of the animation.
|
||||
* @option {String} easing The easing method for the animation.
|
||||
* @option {Boolean} margin If true, the margin of the target element will be deducted from the final position.
|
||||
* @option {Object, Number} offset Add/deduct from the end position. One number for both axes or { top:x, left:y }.
|
||||
* @option {Object, Number} over Add/deduct the height/width multiplied by 'over', can be { top:x, left:y } when using both axes.
|
||||
* @option {Boolean} queue If true, and both axis are given, the 2nd axis will only be animated after the first one ends.
|
||||
* @option {Function} onAfter Function to be called after the scrolling ends.
|
||||
* @option {Function} onAfterFirst If queuing is activated, this function will be called after the first scrolling ends.
|
||||
* @return {jQuery} Returns the same jQuery object, for chaining.
|
||||
*
|
||||
* @desc Scroll to a fixed position
|
||||
* @example $('div').scrollTo( 340 );
|
||||
*
|
||||
* @desc Scroll relatively to the actual position
|
||||
* @example $('div').scrollTo( '+=340px', { axis:'y' } );
|
||||
*
|
||||
* @desc Scroll using a selector (relative to the scrolled element)
|
||||
* @example $('div').scrollTo( 'p.paragraph:eq(2)', 500, { easing:'swing', queue:true, axis:'xy' } );
|
||||
*
|
||||
* @desc Scroll to a DOM element (same for jQuery object)
|
||||
* @example var second_child = document.getElementById('container').firstChild.nextSibling;
|
||||
* $('#container').scrollTo( second_child, { duration:500, axis:'x', onAfter:function(){
|
||||
* alert('scrolled!!');
|
||||
* }});
|
||||
*
|
||||
* @desc Scroll on both axes, to different values
|
||||
* @example $('div').scrollTo( { top: 300, left:'+=200' }, { axis:'xy', offset:-20 } );
|
||||
*/
|
||||
|
||||
;(function( $ ){
|
||||
|
||||
var $scrollTo = $.scrollTo = function( target, duration, settings ){
|
||||
$(window).scrollTo( target, duration, settings );
|
||||
};
|
||||
|
||||
$scrollTo.defaults = {
|
||||
axis:'xy',
|
||||
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1,
|
||||
limit:true
|
||||
};
|
||||
|
||||
// Returns the element that needs to be animated to scroll the window.
|
||||
// Kept for backwards compatibility (specially for localScroll & serialScroll)
|
||||
$scrollTo.window = function( scope ){
|
||||
return $(window)._scrollable();
|
||||
};
|
||||
|
||||
// Hack, hack, hack :)
|
||||
// Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
|
||||
$.fn._scrollable = function(){
|
||||
return this.map(function(){
|
||||
var elem = this,
|
||||
isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
|
||||
|
||||
if( !isWin )
|
||||
return elem;
|
||||
|
||||
var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem;
|
||||
|
||||
return /webkit/i.test(navigator.userAgent) || doc.compatMode == 'BackCompat' ?
|
||||
doc.body :
|
||||
doc.documentElement;
|
||||
});
|
||||
};
|
||||
|
||||
$.fn.scrollTo = function( target, duration, settings ){
|
||||
if( typeof duration == 'object' ){
|
||||
settings = duration;
|
||||
duration = 0;
|
||||
}
|
||||
if( typeof settings == 'function' )
|
||||
settings = { onAfter:settings };
|
||||
|
||||
if( target == 'max' )
|
||||
target = 9e9;
|
||||
|
||||
settings = $.extend( {}, $scrollTo.defaults, settings );
|
||||
// Speed is still recognized for backwards compatibility
|
||||
duration = duration || settings.duration;
|
||||
// Make sure the settings are given right
|
||||
settings.queue = settings.queue && settings.axis.length > 1;
|
||||
|
||||
if( settings.queue )
|
||||
// Let's keep the overall duration
|
||||
duration /= 2;
|
||||
settings.offset = both( settings.offset );
|
||||
settings.over = both( settings.over );
|
||||
|
||||
return this._scrollable().each(function(){
|
||||
// Null target yields nothing, just like jQuery does
|
||||
if (target == null) return;
|
||||
|
||||
var elem = this,
|
||||
$elem = $(elem),
|
||||
targ = target, toff, attr = {},
|
||||
win = $elem.is('html,body');
|
||||
|
||||
switch( typeof targ ){
|
||||
// A number will pass the regex
|
||||
case 'number':
|
||||
case 'string':
|
||||
if( /^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ) ){
|
||||
targ = both( targ );
|
||||
// We are done
|
||||
break;
|
||||
}
|
||||
// Relative selector, no break!
|
||||
targ = $(targ,this);
|
||||
if (!targ.length) return;
|
||||
case 'object':
|
||||
// DOMElement / jQuery
|
||||
if( targ.is || targ.style )
|
||||
// Get the real position of the target
|
||||
toff = (targ = $(targ)).offset();
|
||||
}
|
||||
$.each( settings.axis.split(''), function( i, axis ){
|
||||
var Pos = axis == 'x' ? 'Left' : 'Top',
|
||||
pos = Pos.toLowerCase(),
|
||||
key = 'scroll' + Pos,
|
||||
old = elem[key],
|
||||
max = $scrollTo.max(elem, axis);
|
||||
|
||||
if( toff ){// jQuery / DOMElement
|
||||
attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
|
||||
|
||||
// If it's a dom element, reduce the margin
|
||||
if( settings.margin ){
|
||||
attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
|
||||
attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
|
||||
}
|
||||
|
||||
attr[key] += settings.offset[pos] || 0;
|
||||
|
||||
if( settings.over[pos] )
|
||||
// Scroll to a fraction of its width/height
|
||||
attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
|
||||
}else{
|
||||
var val = targ[pos];
|
||||
// Handle percentage values
|
||||
attr[key] = val.slice && val.slice(-1) == '%' ?
|
||||
parseFloat(val) / 100 * max
|
||||
: val;
|
||||
}
|
||||
|
||||
// Number or 'number'
|
||||
if( settings.limit && /^\d+$/.test(attr[key]) )
|
||||
// Check the limits
|
||||
attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
|
||||
|
||||
// Queueing axes
|
||||
if( !i && settings.queue ){
|
||||
// Don't waste time animating, if there's no need.
|
||||
if( old != attr[key] )
|
||||
// Intermediate animation
|
||||
animate( settings.onAfterFirst );
|
||||
// Don't animate this axis again in the next iteration.
|
||||
delete attr[key];
|
||||
}
|
||||
});
|
||||
|
||||
animate( settings.onAfter );
|
||||
|
||||
function animate( callback ){
|
||||
$elem.animate( attr, duration, settings.easing, callback && function(){
|
||||
callback.call(this, target, settings);
|
||||
});
|
||||
};
|
||||
|
||||
}).end();
|
||||
};
|
||||
|
||||
// Max scrolling position, works on quirks mode
|
||||
// It only fails (not too badly) on IE, quirks mode.
|
||||
$scrollTo.max = function( elem, axis ){
|
||||
var Dim = axis == 'x' ? 'Width' : 'Height',
|
||||
scroll = 'scroll'+Dim;
|
||||
|
||||
if( !$(elem).is('html,body') )
|
||||
return elem[scroll] - $(elem)[Dim.toLowerCase()]();
|
||||
|
||||
var size = 'client' + Dim,
|
||||
html = elem.ownerDocument.documentElement,
|
||||
body = elem.ownerDocument.body;
|
||||
|
||||
return Math.max( html[scroll], body[scroll] )
|
||||
- Math.min( html[size] , body[size] );
|
||||
};
|
||||
|
||||
function both( val ){
|
||||
return typeof val == 'object' ? val : { top:val, left:val };
|
||||
};
|
||||
|
||||
})( jQuery );
|
||||
18
docs/scripts/jquery.sunlight.js
Normal file
18
docs/scripts/jquery.sunlight.js
Normal file
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* jQuery plugin for Sunlight http://sunlightjs.com/
|
||||
*
|
||||
* by Tommy Montgomery http://tmont.com/
|
||||
* licensed under WTFPL http://sam.zoy.org/wtfpl/
|
||||
*/
|
||||
(function($, window){
|
||||
|
||||
$.fn.sunlight = function(options) {
|
||||
var highlighter = new window.Sunlight.Highlighter(options);
|
||||
this.each(function() {
|
||||
highlighter.highlightNode(this);
|
||||
});
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
}(jQuery, this));
|
||||
202
docs/scripts/prettify/Apache-License-2.0.txt
Normal file
202
docs/scripts/prettify/Apache-License-2.0.txt
Normal file
@@ -0,0 +1,202 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
6
docs/scripts/prettify/jquery.min.js
vendored
Normal file
6
docs/scripts/prettify/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
21
docs/scripts/prettify/lang-css.js
Normal file
21
docs/scripts/prettify/lang-css.js
Normal file
@@ -0,0 +1,21 @@
|
||||
PR.registerLangHandler(PR.createSimpleLexer([
|
||||
["pln", /^[\t\n\f\r ]+/, null, " \t\r\n"]
|
||||
], [
|
||||
["str", /^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/, null],
|
||||
["str", /^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/, null],
|
||||
["lang-css-str", /^url\(([^"')]*)\)/i],
|
||||
["kwd", /^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i, null],
|
||||
["lang-css-kw", /^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],
|
||||
["com", /^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],
|
||||
["com", /^(?:<\!--|--\>)/],
|
||||
["lit", /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
|
||||
["lit", /^#[\da-f]{3,6}/i],
|
||||
["pln", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],
|
||||
["pun", /^[^\s\w"']+/]
|
||||
]), ["css"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([], [
|
||||
["kwd", /^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]
|
||||
]), ["css-kw"]);
|
||||
PR.registerLangHandler(PR.createSimpleLexer([], [
|
||||
["str", /^[^"')]+/]
|
||||
]), ["css-str"]);
|
||||
496
docs/scripts/prettify/prettify.js
Normal file
496
docs/scripts/prettify/prettify.js
Normal file
@@ -0,0 +1,496 @@
|
||||
var q = null;
|
||||
window.PR_SHOULD_USE_CONTINUATION = !0;
|
||||
(function() {
|
||||
function L(a) {
|
||||
function m(a) {
|
||||
var f = a.charCodeAt(0);
|
||||
if (f !== 92) return f;
|
||||
var b = a.charAt(1);
|
||||
return (f = r[b]) ? f : "0" <= b && b <= "7" ? parseInt(a.substring(1), 8) : b === "u" || b === "x" ? parseInt(a.substring(2), 16) : a.charCodeAt(1)
|
||||
}
|
||||
|
||||
function e(a) {
|
||||
if (a < 32) return (a < 16 ? "\\x0" : "\\x") + a.toString(16);
|
||||
a = String.fromCharCode(a);
|
||||
if (a === "\\" || a === "-" || a === "[" || a === "]") a = "\\" + a;
|
||||
return a
|
||||
}
|
||||
|
||||
function h(a) {
|
||||
for (var f = a.substring(1, a.length - 1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g), a = [], b = [], o = f[0] === "^", c = o ? 1 : 0, i = f.length; c < i; ++c) {
|
||||
var j = f[c];
|
||||
if (/\\[bdsw]/i.test(j)) a.push(j);
|
||||
else {
|
||||
var j = m(j),
|
||||
d;
|
||||
c + 2 < i && "-" === f[c + 1] ? (d = m(f[c + 2]), c += 2) : d = j;
|
||||
b.push([j, d]);
|
||||
d < 65 || j > 122 || (d < 65 || j > 90 || b.push([Math.max(65, j) | 32, Math.min(d, 90) | 32]), d < 97 || j > 122 || b.push([Math.max(97, j) & -33, Math.min(d, 122) & -33]))
|
||||
}
|
||||
}
|
||||
b.sort(function(a, f) {
|
||||
return a[0] - f[0] || f[1] - a[1]
|
||||
});
|
||||
f = [];
|
||||
j = [NaN, NaN];
|
||||
for (c = 0; c < b.length; ++c) i = b[c], i[0] <= j[1] + 1 ? j[1] = Math.max(j[1], i[1]) : f.push(j = i);
|
||||
b = ["["];
|
||||
o && b.push("^");
|
||||
b.push.apply(b, a);
|
||||
for (c = 0; c < f.length; ++c) i = f[c], b.push(e(i[0])), i[1] > i[0] && (i[1] + 1 > i[0] && b.push("-"), b.push(e(i[1])));
|
||||
b.push("]");
|
||||
return b.join("")
|
||||
}
|
||||
|
||||
function y(a) {
|
||||
for (var f = a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g), b = f.length, d = [], c = 0, i = 0; c < b; ++c) {
|
||||
var j = f[c];
|
||||
j === "(" ? ++i : "\\" === j.charAt(0) && (j = +j.substring(1)) && j <= i && (d[j] = -1)
|
||||
}
|
||||
for (c = 1; c < d.length; ++c) - 1 === d[c] && (d[c] = ++t);
|
||||
for (i = c = 0; c < b; ++c) j = f[c], j === "(" ? (++i, d[i] === void 0 && (f[c] = "(?:")) : "\\" === j.charAt(0) && (j = +j.substring(1)) && j <= i && (f[c] = "\\" + d[i]);
|
||||
for (i = c = 0; c < b; ++c)"^" === f[c] && "^" !== f[c + 1] && (f[c] = "");
|
||||
if (a.ignoreCase && s) for (c = 0; c < b; ++c) j = f[c], a = j.charAt(0), j.length >= 2 && a === "[" ? f[c] = h(j) : a !== "\\" && (f[c] = j.replace(/[A-Za-z]/g, function(a) {
|
||||
a = a.charCodeAt(0);
|
||||
return "[" + String.fromCharCode(a & -33, a | 32) + "]"
|
||||
}));
|
||||
return f.join("")
|
||||
}
|
||||
for (var t = 0, s = !1, l = !1, p = 0, d = a.length; p < d; ++p) {
|
||||
var g = a[p];
|
||||
if (g.ignoreCase) l = !0;
|
||||
else if (/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi, ""))) {
|
||||
s = !0;
|
||||
l = !1;
|
||||
break
|
||||
}
|
||||
}
|
||||
for (var r = {
|
||||
b: 8,
|
||||
t: 9,
|
||||
n: 10,
|
||||
v: 11,
|
||||
f: 12,
|
||||
r: 13
|
||||
}, n = [], p = 0, d = a.length; p < d; ++p) {
|
||||
g = a[p];
|
||||
if (g.global || g.multiline) throw Error("" + g);
|
||||
n.push("(?:" + y(g) + ")")
|
||||
}
|
||||
return RegExp(n.join("|"), l ? "gi" : "g")
|
||||
}
|
||||
|
||||
function M(a) {
|
||||
function m(a) {
|
||||
switch (a.nodeType) {
|
||||
case 1:
|
||||
if (e.test(a.className)) break;
|
||||
for (var g = a.firstChild; g; g = g.nextSibling) m(g);
|
||||
g = a.nodeName;
|
||||
if ("BR" === g || "LI" === g) h[s] = "\n", t[s << 1] = y++, t[s++ << 1 | 1] = a;
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
g = a.nodeValue, g.length && (g = p ? g.replace(/\r\n?/g, "\n") : g.replace(/[\t\n\r ]+/g, " "), h[s] = g, t[s << 1] = y, y += g.length, t[s++ << 1 | 1] = a)
|
||||
}
|
||||
}
|
||||
var e = /(?:^|\s)nocode(?:\s|$)/,
|
||||
h = [],
|
||||
y = 0,
|
||||
t = [],
|
||||
s = 0,
|
||||
l;
|
||||
a.currentStyle ? l = a.currentStyle.whiteSpace : window.getComputedStyle && (l = document.defaultView.getComputedStyle(a, q).getPropertyValue("white-space"));
|
||||
var p = l && "pre" === l.substring(0, 3);
|
||||
m(a);
|
||||
return {
|
||||
a: h.join("").replace(/\n$/, ""),
|
||||
c: t
|
||||
}
|
||||
}
|
||||
|
||||
function B(a, m, e, h) {
|
||||
m && (a = {
|
||||
a: m,
|
||||
d: a
|
||||
}, e(a), h.push.apply(h, a.e))
|
||||
}
|
||||
|
||||
function x(a, m) {
|
||||
function e(a) {
|
||||
for (var l = a.d, p = [l, "pln"], d = 0, g = a.a.match(y) || [], r = {}, n = 0, z = g.length; n < z; ++n) {
|
||||
var f = g[n],
|
||||
b = r[f],
|
||||
o = void 0,
|
||||
c;
|
||||
if (typeof b === "string") c = !1;
|
||||
else {
|
||||
var i = h[f.charAt(0)];
|
||||
if (i) o = f.match(i[1]), b = i[0];
|
||||
else {
|
||||
for (c = 0; c < t; ++c) if (i = m[c], o = f.match(i[1])) {
|
||||
b = i[0];
|
||||
break
|
||||
}
|
||||
o || (b = "pln")
|
||||
}
|
||||
if ((c = b.length >= 5 && "lang-" === b.substring(0, 5)) && !(o && typeof o[1] === "string")) c = !1, b = "src";
|
||||
c || (r[f] = b)
|
||||
}
|
||||
i = d;
|
||||
d += f.length;
|
||||
if (c) {
|
||||
c = o[1];
|
||||
var j = f.indexOf(c),
|
||||
k = j + c.length;
|
||||
o[2] && (k = f.length - o[2].length, j = k - c.length);
|
||||
b = b.substring(5);
|
||||
B(l + i, f.substring(0, j), e, p);
|
||||
B(l + i + j, c, C(b, c), p);
|
||||
B(l + i + k, f.substring(k), e, p)
|
||||
} else p.push(l + i, b)
|
||||
}
|
||||
a.e = p
|
||||
}
|
||||
var h = {},
|
||||
y;
|
||||
(function() {
|
||||
for (var e = a.concat(m), l = [], p = {}, d = 0, g = e.length; d < g; ++d) {
|
||||
var r = e[d],
|
||||
n = r[3];
|
||||
if (n) for (var k = n.length; --k >= 0;) h[n.charAt(k)] = r;
|
||||
r = r[1];
|
||||
n = "" + r;
|
||||
p.hasOwnProperty(n) || (l.push(r), p[n] = q)
|
||||
}
|
||||
l.push(/[\S\s]/);
|
||||
y = L(l)
|
||||
})();
|
||||
var t = m.length;
|
||||
return e
|
||||
}
|
||||
|
||||
function u(a) {
|
||||
var m = [],
|
||||
e = [];
|
||||
a.tripleQuotedStrings ? m.push(["str", /^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/, q, "'\""]) : a.multiLineStrings ? m.push(["str", /^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, q, "'\"`"]) : m.push(["str", /^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/, q, "\"'"]);
|
||||
a.verbatimStrings && e.push(["str", /^@"(?:[^"]|"")*(?:"|$)/, q]);
|
||||
var h = a.hashComments;
|
||||
h && (a.cStyleComments ? (h > 1 ? m.push(["com", /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, q, "#"]) : m.push(["com", /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/, q, "#"]), e.push(["str", /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, q])) : m.push(["com", /^#[^\n\r]*/, q, "#"]));
|
||||
a.cStyleComments && (e.push(["com", /^\/\/[^\n\r]*/, q]), e.push(["com", /^\/\*[\S\s]*?(?:\*\/|$)/, q]));
|
||||
a.regexLiterals && e.push(["lang-regex", /^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);
|
||||
(h = a.types) && e.push(["typ", h]);
|
||||
a = ("" + a.keywords).replace(/^ | $/g, "");
|
||||
a.length && e.push(["kwd", RegExp("^(?:" + a.replace(/[\s,]+/g, "|") + ")\\b"), q]);
|
||||
m.push(["pln", /^\s+/, q, " \r\n\t\xa0"]);
|
||||
e.push(["lit", /^@[$_a-z][\w$@]*/i, q], ["typ", /^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/, q], ["pln", /^[$_a-z][\w$@]*/i, q], ["lit", /^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i, q, "0123456789"], ["pln", /^\\[\S\s]?/, q], ["pun", /^.[^\s\w"-$'./@\\`]*/, q]);
|
||||
return x(m, e)
|
||||
}
|
||||
|
||||
function D(a, m) {
|
||||
function e(a) {
|
||||
switch (a.nodeType) {
|
||||
case 1:
|
||||
if (k.test(a.className)) break;
|
||||
if ("BR" === a.nodeName) h(a), a.parentNode && a.parentNode.removeChild(a);
|
||||
else for (a = a.firstChild; a; a = a.nextSibling) e(a);
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
if (p) {
|
||||
var b = a.nodeValue,
|
||||
d = b.match(t);
|
||||
if (d) {
|
||||
var c = b.substring(0, d.index);
|
||||
a.nodeValue = c;
|
||||
(b = b.substring(d.index + d[0].length)) && a.parentNode.insertBefore(s.createTextNode(b), a.nextSibling);
|
||||
h(a);
|
||||
c || a.parentNode.removeChild(a)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function h(a) {
|
||||
function b(a, d) {
|
||||
var e = d ? a.cloneNode(!1) : a,
|
||||
f = a.parentNode;
|
||||
if (f) {
|
||||
var f = b(f, 1),
|
||||
g = a.nextSibling;
|
||||
f.appendChild(e);
|
||||
for (var h = g; h; h = g) g = h.nextSibling, f.appendChild(h)
|
||||
}
|
||||
return e
|
||||
}
|
||||
for (; !a.nextSibling;) if (a = a.parentNode, !a) return;
|
||||
for (var a = b(a.nextSibling, 0), e;
|
||||
(e = a.parentNode) && e.nodeType === 1;) a = e;
|
||||
d.push(a)
|
||||
}
|
||||
var k = /(?:^|\s)nocode(?:\s|$)/,
|
||||
t = /\r\n?|\n/,
|
||||
s = a.ownerDocument,
|
||||
l;
|
||||
a.currentStyle ? l = a.currentStyle.whiteSpace : window.getComputedStyle && (l = s.defaultView.getComputedStyle(a, q).getPropertyValue("white-space"));
|
||||
var p = l && "pre" === l.substring(0, 3);
|
||||
for (l = s.createElement("LI"); a.firstChild;) l.appendChild(a.firstChild);
|
||||
for (var d = [l], g = 0; g < d.length; ++g) e(d[g]);
|
||||
m === (m | 0) && d[0].setAttribute("value", m);
|
||||
var r = s.createElement("OL");
|
||||
r.className = "linenums";
|
||||
for (var n = Math.max(0, m - 1 | 0) || 0, g = 0, z = d.length; g < z; ++g) l = d[g], l.className = "L" + (g + n) % 10, l.firstChild || l.appendChild(s.createTextNode("\xa0")), r.appendChild(l);
|
||||
a.appendChild(r)
|
||||
}
|
||||
|
||||
function k(a, m) {
|
||||
for (var e = m.length; --e >= 0;) {
|
||||
var h = m[e];
|
||||
A.hasOwnProperty(h) ? window.console && console.warn("cannot override language handler %s", h) : A[h] = a
|
||||
}
|
||||
}
|
||||
|
||||
function C(a, m) {
|
||||
if (!a || !A.hasOwnProperty(a)) a = /^\s*</.test(m) ? "default-markup" : "default-code";
|
||||
return A[a]
|
||||
}
|
||||
|
||||
function E(a) {
|
||||
var m =
|
||||
a.g;
|
||||
try {
|
||||
var e = M(a.h),
|
||||
h = e.a;
|
||||
a.a = h;
|
||||
a.c = e.c;
|
||||
a.d = 0;
|
||||
C(m, h)(a);
|
||||
var k = /\bMSIE\b/.test(navigator.userAgent),
|
||||
m = /\n/g,
|
||||
t = a.a,
|
||||
s = t.length,
|
||||
e = 0,
|
||||
l = a.c,
|
||||
p = l.length,
|
||||
h = 0,
|
||||
d = a.e,
|
||||
g = d.length,
|
||||
a = 0;
|
||||
d[g] = s;
|
||||
var r, n;
|
||||
for (n = r = 0; n < g;) d[n] !== d[n + 2] ? (d[r++] = d[n++], d[r++] = d[n++]) : n += 2;
|
||||
g = r;
|
||||
for (n = r = 0; n < g;) {
|
||||
for (var z = d[n], f = d[n + 1], b = n + 2; b + 2 <= g && d[b + 1] === f;) b += 2;
|
||||
d[r++] = z;
|
||||
d[r++] = f;
|
||||
n = b
|
||||
}
|
||||
for (d.length = r; h < p;) {
|
||||
var o = l[h + 2] || s,
|
||||
c = d[a + 2] || s,
|
||||
b = Math.min(o, c),
|
||||
i = l[h + 1],
|
||||
j;
|
||||
if (i.nodeType !== 1 && (j = t.substring(e, b))) {
|
||||
k && (j = j.replace(m, "\r"));
|
||||
i.nodeValue =
|
||||
j;
|
||||
var u = i.ownerDocument,
|
||||
v = u.createElement("SPAN");
|
||||
v.className = d[a + 1];
|
||||
var x = i.parentNode;
|
||||
x.replaceChild(v, i);
|
||||
v.appendChild(i);
|
||||
e < o && (l[h + 1] = i = u.createTextNode(t.substring(b, o)), x.insertBefore(i, v.nextSibling))
|
||||
}
|
||||
e = b;
|
||||
e >= o && (h += 2);
|
||||
e >= c && (a += 2)
|
||||
}
|
||||
} catch (w) {
|
||||
"console" in window && console.log(w && w.stack ? w.stack : w)
|
||||
}
|
||||
}
|
||||
var v = ["break,continue,do,else,for,if,return,while"],
|
||||
w = [
|
||||
[v, "auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],
|
||||
F = [w, "alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],
|
||||
G = [w, "abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
|
||||
H = [G, "as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],
|
||||
w = [w, "debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],
|
||||
I = [v, "and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
|
||||
J = [v, "alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],
|
||||
v = [v, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"],
|
||||
K = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,
|
||||
N = /\S/,
|
||||
O = u({
|
||||
keywords: [F, H, w, "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END" + I, J, v],
|
||||
hashComments: !0,
|
||||
cStyleComments: !0,
|
||||
multiLineStrings: !0,
|
||||
regexLiterals: !0
|
||||
}),
|
||||
A = {};
|
||||
k(O, ["default-code"]);
|
||||
k(x([], [
|
||||
["pln", /^[^<?]+/],
|
||||
["dec", /^<!\w[^>]*(?:>|$)/],
|
||||
["com", /^<\!--[\S\s]*?(?:--\>|$)/],
|
||||
["lang-", /^<\?([\S\s]+?)(?:\?>|$)/],
|
||||
["lang-", /^<%([\S\s]+?)(?:%>|$)/],
|
||||
["pun", /^(?:<[%?]|[%?]>)/],
|
||||
["lang-", /^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],
|
||||
["lang-js", /^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],
|
||||
["lang-css", /^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],
|
||||
["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i]
|
||||
]), ["default-markup", "htm", "html", "mxml", "xhtml", "xml", "xsl"]);
|
||||
k(x([
|
||||
["pln", /^\s+/, q, " \t\r\n"],
|
||||
["atv", /^(?:"[^"]*"?|'[^']*'?)/, q, "\"'"]
|
||||
], [
|
||||
["tag", /^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],
|
||||
["atn", /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
|
||||
["lang-uq.val", /^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],
|
||||
["pun", /^[/<->]+/],
|
||||
["lang-js", /^on\w+\s*=\s*"([^"]+)"/i],
|
||||
["lang-js", /^on\w+\s*=\s*'([^']+)'/i],
|
||||
["lang-js", /^on\w+\s*=\s*([^\s"'>]+)/i],
|
||||
["lang-css", /^style\s*=\s*"([^"]+)"/i],
|
||||
["lang-css", /^style\s*=\s*'([^']+)'/i],
|
||||
["lang-css", /^style\s*=\s*([^\s"'>]+)/i]
|
||||
]), ["in.tag"]);
|
||||
k(x([], [
|
||||
["atv", /^[\S\s]+/]
|
||||
]), ["uq.val"]);
|
||||
k(u({
|
||||
keywords: F,
|
||||
hashComments: !0,
|
||||
cStyleComments: !0,
|
||||
types: K
|
||||
}), ["c", "cc", "cpp", "cxx", "cyc", "m"]);
|
||||
k(u({
|
||||
keywords: "null,true,false"
|
||||
}), ["json"]);
|
||||
k(u({
|
||||
keywords: H,
|
||||
hashComments: !0,
|
||||
cStyleComments: !0,
|
||||
verbatimStrings: !0,
|
||||
types: K
|
||||
}), ["cs"]);
|
||||
k(u({
|
||||
keywords: G,
|
||||
cStyleComments: !0
|
||||
}), ["java"]);
|
||||
k(u({
|
||||
keywords: v,
|
||||
hashComments: !0,
|
||||
multiLineStrings: !0
|
||||
}), ["bsh", "csh", "sh"]);
|
||||
k(u({
|
||||
keywords: I,
|
||||
hashComments: !0,
|
||||
multiLineStrings: !0,
|
||||
tripleQuotedStrings: !0
|
||||
}), ["cv", "py"]);
|
||||
k(u({
|
||||
keywords: "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",
|
||||
hashComments: !0,
|
||||
multiLineStrings: !0,
|
||||
regexLiterals: !0
|
||||
}), ["perl", "pl", "pm"]);
|
||||
k(u({
|
||||
keywords: J,
|
||||
hashComments: !0,
|
||||
multiLineStrings: !0,
|
||||
regexLiterals: !0
|
||||
}), ["rb"]);
|
||||
k(u({
|
||||
keywords: w,
|
||||
cStyleComments: !0,
|
||||
regexLiterals: !0
|
||||
}), ["js"]);
|
||||
k(u({
|
||||
keywords: "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
|
||||
hashComments: 3,
|
||||
cStyleComments: !0,
|
||||
multilineStrings: !0,
|
||||
tripleQuotedStrings: !0,
|
||||
regexLiterals: !0
|
||||
}), ["coffee"]);
|
||||
k(x([], [
|
||||
["str", /^[\S\s]+/]
|
||||
]), ["regex"]);
|
||||
window.prettyPrintOne = function(a, m, e) {
|
||||
var h = document.createElement("PRE");
|
||||
h.innerHTML = a;
|
||||
e && D(h, e);
|
||||
E({
|
||||
g: m,
|
||||
i: e,
|
||||
h: h
|
||||
});
|
||||
return h.innerHTML
|
||||
};
|
||||
window.prettyPrint = function(a) {
|
||||
function m() {
|
||||
for (var e = window.PR_SHOULD_USE_CONTINUATION ? l.now() + 250 : Infinity; p < h.length && l.now() < e; p++) {
|
||||
var n = h[p],
|
||||
k = n.className;
|
||||
if (k.indexOf("prettyprint") >= 0) {
|
||||
var k = k.match(g),
|
||||
f, b;
|
||||
if (b = !k) {
|
||||
b = n;
|
||||
for (var o = void 0, c = b.firstChild; c; c = c.nextSibling) var i = c.nodeType,
|
||||
o = i === 1 ? o ? b : c : i === 3 ? N.test(c.nodeValue) ? b : o : o;
|
||||
b = (f = o === b ? void 0 : o) && "CODE" === f.tagName
|
||||
}
|
||||
b && (k = f.className.match(g));
|
||||
k && (k = k[1]);
|
||||
b = !1;
|
||||
for (o = n.parentNode; o; o = o.parentNode) if ((o.tagName === "pre" || o.tagName === "code" || o.tagName === "xmp") && o.className && o.className.indexOf("prettyprint") >= 0) {
|
||||
b = !0;
|
||||
break
|
||||
}
|
||||
b || ((b = (b = n.className.match(/\blinenums\b(?::(\d+))?/)) ? b[1] && b[1].length ? +b[1] : !0 : !1) && D(n, b), d = {
|
||||
g: k,
|
||||
h: n,
|
||||
i: b
|
||||
}, E(d))
|
||||
}
|
||||
}
|
||||
p < h.length ? setTimeout(m, 250) : a && a()
|
||||
}
|
||||
for (var e = [document.getElementsByTagName("pre"), document.getElementsByTagName("code"), document.getElementsByTagName("xmp")], h = [], k = 0; k < e.length; ++k) for (var t = 0, s = e[k].length; t < s; ++t) h.push(e[k][t]);
|
||||
var e = q,
|
||||
l = Date;
|
||||
l.now || (l = {
|
||||
now: function() {
|
||||
return +new Date
|
||||
}
|
||||
});
|
||||
var p = 0,
|
||||
d, g = /\blang(?:uage)?-([\w.]+)(?!\S)/;
|
||||
m()
|
||||
};
|
||||
window.PR = {
|
||||
createSimpleLexer: x,
|
||||
registerLangHandler: k,
|
||||
sourceDecorator: u,
|
||||
PR_ATTRIB_NAME: "atn",
|
||||
PR_ATTRIB_VALUE: "atv",
|
||||
PR_COMMENT: "com",
|
||||
PR_DECLARATION: "dec",
|
||||
PR_KEYWORD: "kwd",
|
||||
PR_LITERAL: "lit",
|
||||
PR_NOCODE: "nocode",
|
||||
PR_PLAIN: "pln",
|
||||
PR_PUNCTUATION: "pun",
|
||||
PR_SOURCE: "src",
|
||||
PR_STRING: "str",
|
||||
PR_TAG: "tag",
|
||||
PR_TYPE: "typ"
|
||||
}
|
||||
})();
|
||||
91
docs/scripts/sunlight-plugin.doclinks.js
Normal file
91
docs/scripts/sunlight-plugin.doclinks.js
Normal file
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Sunlight documentation link plugin
|
||||
*
|
||||
* This plugin generates hyperlinks to language documentation for certain tokens
|
||||
* (e.g. links to php.net for functions).
|
||||
*
|
||||
* Supported languages:
|
||||
* - PHP (functions and language constructs)
|
||||
* - Ruby (functions)
|
||||
* - Python (functions)
|
||||
* - Perl (functions)
|
||||
* - Lua (functions)
|
||||
*
|
||||
* Options:
|
||||
* - enableDocLinks: true/false (default is false)
|
||||
*/
|
||||
(function(sunlight, document, undefined){
|
||||
if (sunlight === undefined) {
|
||||
throw "Include sunlight.js before including plugin files";
|
||||
}
|
||||
|
||||
var supportedLanguages = {
|
||||
php: {
|
||||
"function": function(word) { return "http://php.net/" + word; },
|
||||
languageConstruct: function(word) { return "http://php.net/" + word; }
|
||||
},
|
||||
|
||||
ruby: {
|
||||
"function": function(word) {
|
||||
return "http://www.ruby-doc.org/docs/ruby-doc-bundle/Manual/man-1.4/function.html#"
|
||||
+ word.replace(/!/g, "_bang").replace(/\?/g, "_p");
|
||||
}
|
||||
},
|
||||
|
||||
python: {
|
||||
"function": function(word) {
|
||||
return "http://docs.python.org/py3k/library/functions.html#" + word;
|
||||
}
|
||||
},
|
||||
|
||||
perl: {
|
||||
"function": function(word) { return "http://perldoc.perl.org/functions/" + word + ".html"; }
|
||||
},
|
||||
|
||||
lua: {
|
||||
"function": function(word) { return "http://www.lua.org/manual/5.1/manual.html#pdf-" + word; }
|
||||
}
|
||||
};
|
||||
|
||||
function createLink(transformUrl) {
|
||||
return function(context) {
|
||||
var link = document.createElement("a");
|
||||
link.className = context.options.classPrefix + context.tokens[context.index].name;
|
||||
link.setAttribute("href", transformUrl(context.tokens[context.index].value));
|
||||
link.appendChild(context.createTextNode(context.tokens[context.index]));
|
||||
context.addNode(link);
|
||||
};
|
||||
}
|
||||
|
||||
sunlight.bind("beforeAnalyze", function(context) {
|
||||
if (!this.options.enableDocLinks) {
|
||||
return;
|
||||
}
|
||||
|
||||
context.analyzerContext.getAnalyzer = function() {
|
||||
var language = supportedLanguages[this.language.name],
|
||||
analyzer,
|
||||
tokenName;
|
||||
|
||||
if (!language) {
|
||||
return;
|
||||
}
|
||||
|
||||
analyzer = sunlight.util.clone(context.analyzerContext.language.analyzer);
|
||||
|
||||
for (tokenName in language) {
|
||||
if (!language.hasOwnProperty(tokenName)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
analyzer["handle_" + tokenName] = createLink(language[tokenName]);
|
||||
}
|
||||
|
||||
return analyzer;
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
sunlight.globalOptions.enableDocLinks = false;
|
||||
|
||||
}(this["Sunlight"], document));
|
||||
104
docs/scripts/sunlight-plugin.linenumbers.js
Normal file
104
docs/scripts/sunlight-plugin.linenumbers.js
Normal file
@@ -0,0 +1,104 @@
|
||||
/**
|
||||
* Sunlight line number/line highlighting plugin
|
||||
*
|
||||
* This creates the line number gutter in addition to creating the line highlighting
|
||||
* overlay (if applicable). It is bundled in sunlight-min.js.
|
||||
*
|
||||
* Options:
|
||||
* - lineNumbers: true/false/"automatic" (default is "automatic")
|
||||
* - lineNumberStart: <number> (line number to start from, default is 1)
|
||||
* - lineHighlight: <array> (array of line numbers to highlight)
|
||||
*/
|
||||
(function(sunlight, document, undefined){
|
||||
if (sunlight === undefined) {
|
||||
throw "Include sunlight.js before including plugin files";
|
||||
}
|
||||
|
||||
function getLineCount(node) {
|
||||
//browsers don't render the last trailing newline, so we make sure that the line numbers reflect that
|
||||
//by disregarding the last trailing newline
|
||||
|
||||
//get the last text node
|
||||
var lastTextNode = function getLastNode(node) {
|
||||
if (!node.lastChild) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (node.lastChild.nodeType === 3) {
|
||||
return node.lastChild;
|
||||
}
|
||||
|
||||
return getLastNode(node.lastChild);
|
||||
}(node) || { lastChild: "" };
|
||||
|
||||
return node.innerHTML.replace(/[^\n]/g, "").length - /\n$/.test(lastTextNode.nodeValue);
|
||||
}
|
||||
|
||||
sunlight.bind("afterHighlightNode", function(context) {
|
||||
var lineContainer,
|
||||
lineCount,
|
||||
lineHighlightOverlay,
|
||||
currentLineOverlay,
|
||||
lineHighlightingEnabled,
|
||||
i,
|
||||
eol,
|
||||
link,
|
||||
name;
|
||||
|
||||
if (!this.options.lineNumbers) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.options.lineNumbers === "automatic" && sunlight.util.getComputedStyle(context.node, "display") !== "block") {
|
||||
//if it's not a block level element or the lineNumbers option is not set to "automatic"
|
||||
return;
|
||||
}
|
||||
|
||||
lineContainer = document.createElement("pre");
|
||||
lineCount = getLineCount(context.node);
|
||||
|
||||
lineHighlightingEnabled = this.options.lineHighlight.length > 0;
|
||||
if (lineHighlightingEnabled) {
|
||||
lineHighlightOverlay = document.createElement("div");
|
||||
lineHighlightOverlay.className = this.options.classPrefix + "line-highlight-overlay";
|
||||
}
|
||||
|
||||
lineContainer.className = this.options.classPrefix + "line-number-margin";
|
||||
|
||||
eol = document.createTextNode(sunlight.util.eol)
|
||||
for (i = this.options.lineNumberStart; i <= this.options.lineNumberStart + lineCount; i++) {
|
||||
link = document.createElement("a");
|
||||
name = (context.node.id ? context.node.id : this.options.classPrefix + context.count) + "-line-" + i;
|
||||
|
||||
link.setAttribute("name", name);
|
||||
link.setAttribute("href", "#" + name);
|
||||
|
||||
link.appendChild(document.createTextNode(i));
|
||||
lineContainer.appendChild(link);
|
||||
lineContainer.appendChild(eol.cloneNode(false));
|
||||
|
||||
if (lineHighlightingEnabled) {
|
||||
currentLineOverlay = document.createElement("div");
|
||||
if (sunlight.util.contains(this.options.lineHighlight, i)) {
|
||||
currentLineOverlay.className = this.options.classPrefix + "line-highlight-active";
|
||||
}
|
||||
lineHighlightOverlay.appendChild(currentLineOverlay);
|
||||
}
|
||||
}
|
||||
|
||||
context.codeContainer.insertBefore(lineContainer, context.codeContainer.firstChild);
|
||||
|
||||
if (lineHighlightingEnabled) {
|
||||
context.codeContainer.appendChild(lineHighlightOverlay);
|
||||
}
|
||||
|
||||
//enable the border on the code container
|
||||
context.codeContainer.style.borderWidth = "1px";
|
||||
context.codeContainer.style.borderStyle = "solid";
|
||||
});
|
||||
|
||||
sunlight.globalOptions.lineNumbers = "automatic";
|
||||
sunlight.globalOptions.lineNumberStart = 1;
|
||||
sunlight.globalOptions.lineHighlight = [];
|
||||
|
||||
}(this["Sunlight"], document));
|
||||
159
docs/scripts/sunlight-plugin.menu.js
Normal file
159
docs/scripts/sunlight-plugin.menu.js
Normal file
@@ -0,0 +1,159 @@
|
||||
/**
|
||||
* Sunlight menu plugin
|
||||
*
|
||||
* This creates the menu in the upper right corner for block-level elements.
|
||||
* This plugin is not supported for IE6.
|
||||
*
|
||||
* Options:
|
||||
* - showMenu: true/false (default is false)
|
||||
* - autoCollapse: true/false (default is false)
|
||||
*/
|
||||
(function(sunlight, document, undefined){
|
||||
if (sunlight === undefined) {
|
||||
throw "Include sunlight.js before including plugin files";
|
||||
}
|
||||
|
||||
//http://dean.edwards.name/weblog/2007/03/sniff/#comment83695
|
||||
//eval()'d so that it compresses correctly
|
||||
var ieVersion = eval("0 /*@cc_on+ScriptEngineMajorVersion()@*/");
|
||||
|
||||
function createLink(href, title, text) {
|
||||
var link = document.createElement("a");
|
||||
link.setAttribute("href", href);
|
||||
link.setAttribute("title", title);
|
||||
if (text) {
|
||||
link.appendChild(document.createTextNode(text));
|
||||
}
|
||||
return link;
|
||||
}
|
||||
|
||||
function getTextRecursive(node) {
|
||||
var text = "",
|
||||
i = 0;
|
||||
|
||||
if (node.nodeType === 3) {
|
||||
return node.nodeValue;
|
||||
}
|
||||
|
||||
text = "";
|
||||
for (i = 0; i < node.childNodes.length; i++) {
|
||||
text += getTextRecursive(node.childNodes[i]);
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
sunlight.bind("afterHighlightNode", function(context) {
|
||||
var menu,
|
||||
sunlightIcon,
|
||||
ul,
|
||||
collapse,
|
||||
mDash,
|
||||
collapseLink,
|
||||
viewRaw,
|
||||
viewRawLink,
|
||||
about,
|
||||
aboutLink,
|
||||
icon;
|
||||
|
||||
if ((ieVersion && ieVersion < 7) || !this.options.showMenu || sunlight.util.getComputedStyle(context.node, "display") !== "block") {
|
||||
return;
|
||||
}
|
||||
|
||||
menu = document.createElement("div");
|
||||
menu.className = this.options.classPrefix + "menu";
|
||||
|
||||
sunlightIcon =
|
||||
"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJ" +
|
||||
"cEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41Ljg3O4BdAAAAl0lEQVQ4jWP4" +
|
||||
"P9n9PyWYgTYGzAr+///Q9P//Ty/HjhfEETDg1oH/YPDgNKbm4wsIuGBO+H84WJJKhhd2dkA0v3tEZhjcPQox4MVN" +
|
||||
"7P7fUEHAgM112DX++Qkx+PEFMqPxwSmIAQenkWHAvCicAUucAbCAfX2PQCCCEtDGKkz86RXEgL39BAwAKcAFbh/6" +
|
||||
"/39GIL3yAj0NAAB+LQeDCZ9tvgAAAABJRU5ErkJggg==";
|
||||
|
||||
ul = document.createElement("ul");
|
||||
|
||||
collapse = document.createElement("li");
|
||||
mDash = String.fromCharCode(0x2014);
|
||||
collapseLink = createLink("#", "collapse code block", mDash);
|
||||
|
||||
collapseLink.onclick = function() {
|
||||
var originalHeight = sunlight.util.getComputedStyle(context.codeContainer, "height"),
|
||||
originalOverflow = sunlight.util.getComputedStyle(context.codeContainer, "overflowY");
|
||||
|
||||
return function() {
|
||||
var needsToExpand = sunlight.util.getComputedStyle(context.codeContainer, "height") !== originalHeight;
|
||||
|
||||
this.replaceChild(document.createTextNode(needsToExpand ? mDash : "+"), this.firstChild);
|
||||
this.setAttribute("title", (needsToExpand ? "collapse" : "expand") + " clode block");
|
||||
context.codeContainer.style.height = needsToExpand ? originalHeight : "0px";
|
||||
context.codeContainer.style.overflowY = needsToExpand ? originalOverflow : "hidden";
|
||||
|
||||
return false;
|
||||
}
|
||||
}();
|
||||
|
||||
collapse.appendChild(collapseLink);
|
||||
|
||||
viewRaw = document.createElement("li");
|
||||
viewRawLink = createLink("#", "view raw code", "raw");
|
||||
viewRawLink.onclick = function() {
|
||||
var textarea;
|
||||
return function() {
|
||||
var rawCode;
|
||||
|
||||
if (textarea) {
|
||||
textarea.parentNode.removeChild(textarea);
|
||||
textarea = null;
|
||||
context.node.style.display = "block";
|
||||
this.replaceChild(document.createTextNode("raw"), this.firstChild);
|
||||
this.setAttribute("title", "view raw code");
|
||||
} else {
|
||||
//hide the codeContainer, flatten all text nodes, create a <textarea>, append it
|
||||
rawCode = getTextRecursive(context.node);
|
||||
textarea = document.createElement("textarea");
|
||||
textarea.value = rawCode;
|
||||
textarea.setAttribute("readonly", "readonly");
|
||||
textarea.style.width = (parseInt(sunlight.util.getComputedStyle(context.node, "width")) - 5) + "px"; //IE, Safari and Chrome can't handle the actual width
|
||||
textarea.style.height = sunlight.util.getComputedStyle(context.node, "height");
|
||||
textarea.style.border = "none";
|
||||
textarea.style.overflowX = "hidden"; //IE requires this
|
||||
textarea.setAttribute("wrap", "off"); //prevent line wrapping lol
|
||||
context.codeContainer.insertBefore(textarea, context.node);
|
||||
context.node.style.display = "none";
|
||||
|
||||
this.replaceChild(document.createTextNode("highlighted"), this.firstChild);
|
||||
this.setAttribute("title", "view highlighted code");
|
||||
textarea.select(); //highlight everything
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}();
|
||||
|
||||
viewRaw.appendChild(viewRawLink);
|
||||
|
||||
about = document.createElement("li");
|
||||
aboutLink = createLink("http://sunlightjs.com/", "Sunlight: JavaScript syntax highlighter by Tommy Montgomery");
|
||||
|
||||
icon = document.createElement("img");
|
||||
icon.setAttribute("src", "data:image/png;base64," + sunlightIcon);
|
||||
icon.setAttribute("alt", "about");
|
||||
aboutLink.appendChild(icon);
|
||||
about.appendChild(aboutLink);
|
||||
|
||||
ul.appendChild(about);
|
||||
ul.appendChild(viewRaw);
|
||||
ul.appendChild(collapse);
|
||||
|
||||
menu.appendChild(ul);
|
||||
context.container.insertBefore(menu, context.container.firstChild);
|
||||
|
||||
if (this.options.autoCollapse) {
|
||||
collapseLink.onclick.call(collapseLink);
|
||||
}
|
||||
});
|
||||
|
||||
sunlight.globalOptions.showMenu = false;
|
||||
sunlight.globalOptions.autoCollapse = false;
|
||||
|
||||
}(this["Sunlight"], document));
|
||||
183
docs/scripts/sunlight.javascript.js
Normal file
183
docs/scripts/sunlight.javascript.js
Normal file
@@ -0,0 +1,183 @@
|
||||
(function(sunlight, undefined){
|
||||
|
||||
if (sunlight === undefined || sunlight["registerLanguage"] === undefined) {
|
||||
throw "Include sunlight.js before including language files";
|
||||
}
|
||||
|
||||
sunlight.registerLanguage("javascript", {
|
||||
keywords: [
|
||||
//keywords
|
||||
"break", "case", "catch", "continue", "default", "delete", "do",
|
||||
"else", "finally", "for", "function", "if", "in", "instanceof",
|
||||
"new", "return", "switch", "this", "throw", "try", "typeof",
|
||||
"var", "void", "while", "with",
|
||||
|
||||
//literals
|
||||
"true", "false", "null"
|
||||
],
|
||||
|
||||
customTokens: {
|
||||
reservedWord: {
|
||||
values: [
|
||||
"abstract", "boolean", "byte", "char", "class", "const", "debugger", "double",
|
||||
"enum", "export", "extends", "final", "float", "goto", "implements", "import",
|
||||
"int", "interface", "long", "native", "package", "private", "protected", "public",
|
||||
"short", "static", "super", "synchronized", "throws", "transient", "volatile"
|
||||
],
|
||||
boundary: "\\b"
|
||||
},
|
||||
|
||||
globalVariable: {
|
||||
values: ["NaN", "Infinity", "undefined"],
|
||||
boundary: "\\b"
|
||||
},
|
||||
|
||||
globalFunction: {
|
||||
values: ["encodeURI", "encodeURIComponent", "decodeURI", "decodeURIComponent", "parseInt", "parseFloat", "isNaN", "isFinite", "eval"],
|
||||
boundary: "\\b"
|
||||
},
|
||||
|
||||
globalObject: {
|
||||
values: [
|
||||
"Math", "JSON",
|
||||
"XMLHttpRequest", "XDomainRequest", "ActiveXObject",
|
||||
"Boolean", "Date", "Array", "Image", "Function", "Object", "Number", "RegExp", "String"
|
||||
],
|
||||
boundary: "\\b"
|
||||
}
|
||||
},
|
||||
|
||||
scopes: {
|
||||
string: [ ["\"", "\"", sunlight.util.escapeSequences.concat(["\\\""])], ["'", "'", sunlight.util.escapeSequences.concat(["\\\'", "\\\\"])] ],
|
||||
comment: [ ["//", "\n", null, true], ["/*", "*/"] ]
|
||||
},
|
||||
|
||||
customParseRules: [
|
||||
//regex literal
|
||||
function(context) {
|
||||
var peek = context.reader.peek(),
|
||||
isValid,
|
||||
regexLiteral = "/",
|
||||
line = context.reader.getLine(),
|
||||
column = context.reader.getColumn(),
|
||||
charClass = false,
|
||||
peek2,
|
||||
next;
|
||||
|
||||
if (context.reader.current() !== "/" || peek === "/" || peek === "*") {
|
||||
//doesn't start with a / or starts with // (comment) or /* (multi line comment)
|
||||
return null;
|
||||
}
|
||||
|
||||
isValid = function() {
|
||||
var previousNonWsToken = context.token(context.count() - 1),
|
||||
previousToken = null;
|
||||
if (context.defaultData.text !== "") {
|
||||
previousToken = context.createToken("default", context.defaultData.text);
|
||||
}
|
||||
|
||||
if (!previousToken) {
|
||||
previousToken = previousNonWsToken;
|
||||
}
|
||||
|
||||
//first token of the string
|
||||
if (previousToken === undefined) {
|
||||
return true;
|
||||
}
|
||||
|
||||
//since JavaScript doesn't require statement terminators, if the previous token was whitespace and contained a newline, then we're good
|
||||
if (previousToken.name === "default" && previousToken.value.indexOf("\n") > -1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (sunlight.util.contains(["keyword", "ident", "number"], previousNonWsToken.name)) {
|
||||
return false;
|
||||
}
|
||||
if (previousNonWsToken.name === "punctuation" && !sunlight.util.contains(["(", "{", "[", ",", ";"], previousNonWsToken.value)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}();
|
||||
|
||||
if (!isValid) {
|
||||
return null;
|
||||
}
|
||||
|
||||
//read the regex literal
|
||||
while (context.reader.peek() !== context.reader.EOF) {
|
||||
peek2 = context.reader.peek(2);
|
||||
if (peek2 === "\\/" || peek2 === "\\\\") {
|
||||
//escaped backslash or escaped forward slash
|
||||
regexLiteral += context.reader.read(2);
|
||||
continue;
|
||||
}
|
||||
if (peek2 === "\\[" || peek2 === "\\]") {
|
||||
regexLiteral += context.reader.read(2);
|
||||
continue;
|
||||
} else if (next === "[") {
|
||||
charClass = true;
|
||||
} else if (next === "]") {
|
||||
charClass = false;
|
||||
}
|
||||
|
||||
regexLiteral += (next = context.reader.read());
|
||||
if (next === "/" && !charClass) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//read the regex modifiers
|
||||
//only "g", "i" and "m" are allowed, but for the sake of simplicity we'll just say any alphabetical character is valid
|
||||
while (context.reader.peek() !== context.reader.EOF) {
|
||||
if (!/[A-Za-z]/.test(context.reader.peek())) {
|
||||
break;
|
||||
}
|
||||
|
||||
regexLiteral += context.reader.read();
|
||||
}
|
||||
|
||||
return context.createToken("regexLiteral", regexLiteral, line, column);
|
||||
}
|
||||
],
|
||||
|
||||
identFirstLetter: /[$A-Za-z_]/,
|
||||
identAfterFirstLetter: /[\w\$]/,
|
||||
|
||||
namedIdentRules: {
|
||||
follows: [
|
||||
[{ token: "keyword", values: ["function"] }, sunlight.util.whitespace]
|
||||
]
|
||||
},
|
||||
|
||||
operators: [
|
||||
//arithmetic
|
||||
"++", "+=", "+",
|
||||
"--", "-=", "-",
|
||||
"*=", "*",
|
||||
"/=", "/",
|
||||
"%=", "%",
|
||||
|
||||
//boolean
|
||||
"&&", "||",
|
||||
|
||||
//bitwise
|
||||
"|=", "|",
|
||||
"&=", "&",
|
||||
"^=", "^",
|
||||
">>>=", ">>>", ">>=", ">>",
|
||||
"<<=", "<<",
|
||||
|
||||
//inequality
|
||||
"<=", "<",
|
||||
">=", ">",
|
||||
"===", "==", "!==", "!=",
|
||||
|
||||
//unary
|
||||
"!", "~",
|
||||
|
||||
//other
|
||||
"?", ":", ".", "="
|
||||
]
|
||||
});
|
||||
}(this["Sunlight"]));
|
||||
1157
docs/scripts/sunlight.js
Normal file
1157
docs/scripts/sunlight.js
Normal file
File diff suppressed because it is too large
Load Diff
209
docs/scripts/toc.js
Normal file
209
docs/scripts/toc.js
Normal file
@@ -0,0 +1,209 @@
|
||||
(function($) {
|
||||
$.fn.toc = function(options) {
|
||||
var self = this;
|
||||
var opts = $.extend({}, jQuery.fn.toc.defaults, options);
|
||||
|
||||
var container = $(opts.container);
|
||||
var headings = $(opts.selectors, container);
|
||||
var headingOffsets = [];
|
||||
var activeClassName = opts.prefix+'-active';
|
||||
|
||||
var scrollTo = function(e) {
|
||||
if (opts.smoothScrolling) {
|
||||
e.preventDefault();
|
||||
var elScrollTo = $(e.target).attr('href');
|
||||
var $el = $(elScrollTo);
|
||||
|
||||
$('body,html').animate({ scrollTop: $el.offset().top }, 400, 'swing', function() {
|
||||
location.hash = elScrollTo;
|
||||
});
|
||||
}
|
||||
$('li', self).removeClass(activeClassName);
|
||||
$(e.target).parent().addClass(activeClassName);
|
||||
};
|
||||
|
||||
//highlight on scroll
|
||||
var timeout;
|
||||
var highlightOnScroll = function(e) {
|
||||
if (timeout) {
|
||||
clearTimeout(timeout);
|
||||
}
|
||||
timeout = setTimeout(function() {
|
||||
var top = $(window).scrollTop(),
|
||||
highlighted;
|
||||
for (var i = 0, c = headingOffsets.length; i < c; i++) {
|
||||
if (headingOffsets[i] >= top) {
|
||||
$('li', self).removeClass(activeClassName);
|
||||
highlighted = $('li:eq('+(i-1)+')', self).addClass(activeClassName);
|
||||
opts.onHighlight(highlighted);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}, 50);
|
||||
};
|
||||
if (opts.highlightOnScroll) {
|
||||
$(window).bind('scroll', highlightOnScroll);
|
||||
highlightOnScroll();
|
||||
}
|
||||
|
||||
//Perform search and hide unmatched elements
|
||||
var tocList;
|
||||
var treeObject = {};
|
||||
|
||||
//Create the tree
|
||||
var createTree = function(ul) {
|
||||
var prevLevel = {level: -1, index: -1, parent: -1, val: ''};
|
||||
var levelParent = {0: -1};
|
||||
tocList = ul.children("li");
|
||||
tocList.each(function(i) {
|
||||
var me = $(this).removeClass("toc-active");
|
||||
var currentLevel = parseInt(me.attr('class').trim().slice(-1));
|
||||
if (currentLevel > prevLevel.level) {
|
||||
currentParent = prevLevel.index;
|
||||
} else if (currentLevel == prevLevel.level) {
|
||||
currentParent = prevLevel.parent;
|
||||
} else if (currentLevel < prevLevel.level) {
|
||||
currentParent = levelParent[currentLevel] || prevLevel.parent;
|
||||
}
|
||||
levelParent[currentLevel] = currentParent;
|
||||
var currentVal = $('a', this).text().trim().toLowerCase();
|
||||
treeObject[i] = {
|
||||
val: currentVal,
|
||||
level: currentLevel,
|
||||
parent: currentParent
|
||||
}
|
||||
prevLevel = {index: i, val: currentVal, level: currentLevel, parent: currentParent};
|
||||
});
|
||||
}
|
||||
|
||||
//Show the parents recursively
|
||||
var showParents = function(key) {
|
||||
var me = treeObject[key];
|
||||
if (me.parent > -1) {
|
||||
$(tocList[me.parent]).show();
|
||||
showParents(me.parent);
|
||||
}
|
||||
};
|
||||
|
||||
//Perform the search
|
||||
var search = function(searchVal) {
|
||||
searchVal = searchVal.trim().toLowerCase();
|
||||
for (var key in treeObject) {
|
||||
var me = treeObject[key];
|
||||
if (me.val.indexOf(searchVal) !== -1 || searchVal.length == 0) {
|
||||
$(tocList[key]).show();
|
||||
if ($(tocList[me.parent]).is(":hidden")) {
|
||||
showParents(key);
|
||||
}
|
||||
} else {
|
||||
$(tocList[key]).hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this.each(function() {
|
||||
//build TOC
|
||||
var el = $(this);
|
||||
var searchVal = '';
|
||||
var searchForm = $("<form/>", {class: "form-search quick-search"})
|
||||
.append($("<input/>", {type: "text", class: "input-medium search-query", placeholder: "Quick Search"}))
|
||||
.append($("<i/>", {class: "icon icon-search search-icon"}));
|
||||
searchForm.css({'position': 'fixed', 'top': '45px', 'padding-right': '20px'});
|
||||
$(".search-icon", searchForm).css({'marginLeft': '-20px', 'marginTop': '3px'});
|
||||
|
||||
var ul = $('<ul/>');
|
||||
headings.each(function(i, heading) {
|
||||
var $h = $(heading);
|
||||
headingOffsets.push($h.offset().top - opts.highlightOffset);
|
||||
|
||||
//add anchor
|
||||
var anchor = $('<span/>').attr('id', opts.anchorName(i, heading, opts.prefix)).insertBefore($h);
|
||||
|
||||
//build TOC item
|
||||
var a = $('<a/>')
|
||||
.text(opts.headerText(i, heading, $h))
|
||||
.attr('href', '#' + opts.anchorName(i, heading, opts.prefix))
|
||||
.bind('click', function(e) {
|
||||
scrollTo(e);
|
||||
el.trigger('selected', $(this).attr('href'));
|
||||
});
|
||||
|
||||
var li = $('<li/>')
|
||||
.addClass(opts.itemClass(i, heading, $h, opts.prefix))
|
||||
.append(a);
|
||||
|
||||
ul.append(li);
|
||||
});
|
||||
el.html(ul);
|
||||
el.parent().prepend(searchForm);
|
||||
el.css({'top': '80px'});
|
||||
|
||||
//create the tree
|
||||
createTree(ul)
|
||||
//set intent timer
|
||||
var intentTimer;
|
||||
var accumulatedTime = 0;
|
||||
//bind quick search
|
||||
el.siblings('.quick-search').children('.search-query').bind('keyup', function(e) {
|
||||
if (accumulatedTime < 1000) {
|
||||
window.clearTimeout(intentTimer);
|
||||
}
|
||||
var me = $(this);
|
||||
|
||||
if (me.val().length > 0) {
|
||||
$(".search-icon").removeClass("icon-search").addClass("icon-remove-circle").css('cursor', 'pointer');
|
||||
} else {
|
||||
$(".search-icon").removeClass("icon-remove-circle").addClass("icon-search").css('cursor', 'auto');
|
||||
}
|
||||
|
||||
var intentTime = 500 - (me.val().length * 10);
|
||||
accumulatedTime += intentTime;
|
||||
intentTimer = window.setTimeout(function() {
|
||||
if (searchVal == me.val()) {
|
||||
return false;
|
||||
}
|
||||
searchVal = me.val();
|
||||
search(me.val());
|
||||
accumulatedTime = 0;
|
||||
}, intentTime);
|
||||
});
|
||||
|
||||
// Make text clear icon work
|
||||
$(".search-icon").click(function(e) {
|
||||
if($(this).hasClass('icon-remove-circle')) {
|
||||
$('.search-query').val('').trigger('keyup');
|
||||
} else {
|
||||
$('.search-query').focus();
|
||||
}
|
||||
});
|
||||
|
||||
//set positions of search box and TOC
|
||||
var navHeight = $(".navbar").height();
|
||||
var searchHeight = $(".quick-search").height();
|
||||
$(".quick-search").css({'top': navHeight + 10 + 'px', 'position': 'fixed'});
|
||||
el.css('top', navHeight + searchHeight + 15 + 'px');
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
jQuery.fn.toc.defaults = {
|
||||
container: 'body',
|
||||
selectors: 'h1,h2,h3',
|
||||
smoothScrolling: true,
|
||||
prefix: 'toc',
|
||||
onHighlight: function() {},
|
||||
highlightOnScroll: true,
|
||||
highlightOffset: 100,
|
||||
anchorName: function(i, heading, prefix) {
|
||||
return prefix+i;
|
||||
},
|
||||
headerText: function(i, heading, $heading) {
|
||||
return $heading.text();
|
||||
},
|
||||
itemClass: function(i, heading, $heading, prefix) {
|
||||
return prefix + '-' + $heading[0].tagName.toLowerCase();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user