First commit with the DocStrap template truely in effect ( in effect )

This commit is contained in:
Chris Deaner 2014-06-21 22:56:51 -04:00
parent cec6ba3d15
commit 00b1bf25e7
81 changed files with 186530 additions and 84162 deletions

View file

@ -18,7 +18,10 @@ define(["Tone/core/Tone", "Tone/source/Oscillator", "Tone/signal/Scale"], functi
this.input = this.context.createGain();
/** @type {Tone.Oscillator} */
this.oscillator = new Tone.Oscillator(this.defaultArg(rate, 1), "sine");
/** @type {Tone.Scale} @private */
/**
@type {Tone.Scale}
@private
*/
this._scaler = new Tone.Scale(this.defaultArg(outputMin, 0), this.defaultArg(outputMax, 1));
/** alias for the output */
this.output = this._scaler;

View file

@ -5,8 +5,8 @@ module.exports = function(grunt) {
//pkg: grunt.file.readJSON('package.json'),
jsdoc : {
src : {
// src: ['../Tone/**/*.js'],
src: ['../Tone.js'],
src: ['../Tone/**/*.js', '../README.md'],
//src: ['../Tone.js'],
options: {
destination: '../doc',
//configure: './config/jsdoc.conf.json',

View file

@ -0,0 +1,25 @@
{
"tags" : {
"allowUnknownTags" : true
},
"plugins" : ["plugins/markdown"],
"templates" : {
"cleverLinks" : false,
"monospaceLinks" : false,
"default" : {
"outputSourceFiles" : true
},
"systemName" : "Tone.js",
"footer" : "",
"copyright" : "Tone No Tone Copyright © 2014.",
"navType" : "inline",
"theme" : "flatly",
"linenums" : true,
"collapseSymbols" : false,
"inverseNav" : true
},
"markdown" : {
"parser" : "gfm",
"hardwrap" : true
}
}

View file

@ -0,0 +1,651 @@
"use strict";
/**
* @module template/publish
* @type {*}
*/
/*global env: true */
var template = require( 'jsdoc/template' ),
fs = require( 'jsdoc/fs' ),
_ = require( 'underscore' ),
path = require( 'jsdoc/path' ),
taffy = require( 'taffydb' ).taffy,
handle = require( 'jsdoc/util/error' ).handle,
helper = require( 'jsdoc/util/templateHelper' ),
htmlsafe = helper.htmlsafe,
linkto = helper.linkto,
resolveAuthorLinks = helper.resolveAuthorLinks,
scopeToPunc = helper.scopeToPunc,
hasOwnProp = Object.prototype.hasOwnProperty,
conf = env.conf.templates || {},
data,
view,
outdir = env.opts.destination;
var globalUrl = helper.getUniqueFilename( 'global' );
var indexUrl = helper.getUniqueFilename( 'index' );
var navOptions = {
systemName : conf.systemName || "Documentation",
navType : conf.navType || "vertical",
footer : conf.footer || "",
copyright : conf.copyright || "",
theme : conf.theme || "simplex",
linenums : conf.linenums,
collapseSymbols : conf.collapseSymbols || false,
inverseNav : conf.inverseNav
};
var navigationMaster = {
index : {
title : navOptions.systemName,
link : indexUrl,
members : []
},
namespace : {
title : "Namespaces",
link : helper.getUniqueFilename( "namespaces.list" ),
members : []
},
module : {
title : "Modules",
link : helper.getUniqueFilename( "modules.list" ),
members : []
},
class : {
title : "Classes",
link : helper.getUniqueFilename( 'classes.list' ),
members : []
},
mixin : {
title : "Mixins",
link : helper.getUniqueFilename( "mixins.list" ),
members : []
},
event : {
title : "Events",
link : helper.getUniqueFilename( "events.list" ),
members : []
},
tutorial : {
title : "Tutorials",
link : helper.getUniqueFilename( "tutorials.list" ),
members : []
},
global : {
title : "Global",
link : globalUrl,
members : []
},
external : {
title : "Externals",
link : helper.getUniqueFilename( "externals.list" ),
members : []
}
};
function find( spec ) {
return helper.find( data, spec );
}
function tutoriallink( tutorial ) {
return helper.toTutorial( tutorial, null, { tag : 'em', classname : 'disabled', prefix : 'Tutorial: ' } );
}
function getAncestorLinks( doclet ) {
return helper.getAncestorLinks( data, doclet );
}
function hashToLink( doclet, hash ) {
if ( !/^(#.+)/.test( hash ) ) { return hash; }
var url = helper.createLink( doclet );
url = url.replace( /(#.+|$)/, hash );
return '<a href="' + url + '">' + hash + '</a>';
}
function needsSignature( doclet ) {
var needsSig = false;
// function and class definitions always get a signature
if ( doclet.kind === 'function' || doclet.kind === 'class' ) {
needsSig = true;
}
// typedefs that contain functions get a signature, too
else if ( doclet.kind === 'typedef' && doclet.type && doclet.type.names &&
doclet.type.names.length ) {
for ( var i = 0, l = doclet.type.names.length; i < l; i++ ) {
if ( doclet.type.names[i].toLowerCase() === 'function' ) {
needsSig = true;
break;
}
}
}
return needsSig;
}
function addSignatureParams( f ) {
var params = helper.getSignatureParams( f, 'optional' );
f.signature = (f.signature || '') + '(' + params.join( ', ' ) + ')';
}
function addSignatureReturns( f ) {
var returnTypes = helper.getSignatureReturns( f );
f.signature = '<span class="signature">' + (f.signature || '') + '</span>' + '<span class="type-signature">' + (returnTypes.length ? ' &rarr; {' + returnTypes.join( '|' ) + '}' : '') + '</span>';
}
function addSignatureTypes( f ) {
var types = helper.getSignatureTypes( f );
f.signature = (f.signature || '') + '<span class="type-signature">' + (types.length ? ' :' + types.join( '|' ) : '') + '</span>';
}
function addAttribs( f ) {
var attribs = helper.getAttribs( f );
f.attribs = '<span class="type-signature">' + htmlsafe( attribs.length ? '<' + attribs.join( ', ' ) + '> ' : '' ) + '</span>';
}
function shortenPaths( files, commonPrefix ) {
// always use forward slashes
var regexp = new RegExp( '\\\\', 'g' );
Object.keys( files ).forEach( function ( file ) {
files[file].shortened = files[file].resolved.replace( commonPrefix, '' )
.replace( regexp, '/' );
} );
return files;
}
function resolveSourcePath( filepath ) {
return path.resolve( process.cwd(), filepath );
}
function getPathFromDoclet( doclet ) {
if ( !doclet.meta ) {
return;
}
var filepath = doclet.meta.path && doclet.meta.path !== 'null' ?
doclet.meta.path + '/' + doclet.meta.filename :
doclet.meta.filename;
return filepath;
}
function generate( docType, title, docs, filename, resolveLinks ) {
resolveLinks = resolveLinks === false ? false : true;
var docData = {
title : title,
docs : docs,
docType : docType
};
var outpath = path.join( outdir, filename ),
html = view.render( 'container.tmpl', docData );
if ( resolveLinks ) {
html = helper.resolveLinks( html ); // turn {@link foo} into <a href="foodoc.html">foo</a>
}
fs.writeFileSync( outpath, html, 'utf8' );
}
function generateSourceFiles( sourceFiles ) {
Object.keys( sourceFiles ).forEach( function ( file ) {
var source;
// links are keyed to the shortened path in each doclet's `meta.filename` property
var sourceOutfile = helper.getUniqueFilename( sourceFiles[file].shortened );
helper.registerLink( sourceFiles[file].shortened, sourceOutfile );
try {
source = {
kind : 'source',
code : helper.htmlsafe( fs.readFileSync( sourceFiles[file].resolved, 'utf8' ) )
};
}
catch ( e ) {
handle( e );
}
generate( 'source', 'Source: ' + sourceFiles[file].shortened, [source], sourceOutfile,
false );
} );
}
/**
* Look for classes or functions with the same name as modules (which indicates that the module
* exports only that class or function), then attach the classes or functions to the `module`
* property of the appropriate module doclets. The name of each class or function is also updated
* for display purposes. This function mutates the original arrays.
*
* @private
* @param {Array.<module:jsdoc/doclet.Doclet>} doclets - The array of classes and functions to
* check.
* @param {Array.<module:jsdoc/doclet.Doclet>} modules - The array of module doclets to search.
*/
function attachModuleSymbols( doclets, modules ) {
var symbols = {};
// build a lookup table
doclets.forEach( function ( symbol ) {
symbols[symbol.longname] = symbol;
} );
return modules.map( function ( module ) {
if ( symbols[module.longname] ) {
module.module = symbols[module.longname];
module.module.name = module.module.name.replace( 'module:', 'require("' ) + '")';
}
} );
}
/**
* Create the navigation sidebar.
* @param {object} members The members that will be used to create the sidebar.
* @param {array<object>} members.classes
* @param {array<object>} members.externals
* @param {array<object>} members.globals
* @param {array<object>} members.mixins
* @param {array<object>} members.modules
* @param {array<object>} members.namespaces
* @param {array<object>} members.tutorials
* @param {array<object>} members.events
* @return {string} The HTML for the navigation sidebar.
*/
function buildNav( members ) {
var seen = {};
var nav = navigationMaster;
if ( members.modules.length ) {
members.modules.forEach( function ( m ) {
if ( !hasOwnProp.call( seen, m.longname ) ) {
nav.module.members.push( linkto( m.longname, m.name ) );
}
seen[m.longname] = true;
} );
}
if ( members.externals.length ) {
members.externals.forEach( function ( e ) {
if ( !hasOwnProp.call( seen, e.longname ) ) {
nav.external.members.push( linkto( e.longname, e.name.replace( /(^"|"$)/g, '' ) ) );
}
seen[e.longname] = true;
} );
}
if ( members.classes.length ) {
members.classes.forEach( function ( c ) {
if ( !hasOwnProp.call( seen, c.longname ) ) {
nav.class.members.push( linkto( c.longname, c.name ) );
}
seen[c.longname] = true;
} );
}
if ( members.events.length ) {
members.events.forEach( function ( e ) {
if ( !hasOwnProp.call( seen, e.longname ) ) {
nav.event.members.push( linkto( e.longname, e.name ) );
}
seen[e.longname] = true;
} );
}
if ( members.namespaces.length ) {
members.namespaces.forEach( function ( n ) {
if ( !hasOwnProp.call( seen, n.longname ) ) {
nav.namespace.members.push( linkto( n.longname, n.name ) );
}
seen[n.longname] = true;
} );
}
if ( members.mixins.length ) {
members.mixins.forEach( function ( m ) {
if ( !hasOwnProp.call( seen, m.longname ) ) {
nav.mixin.members.push( linkto( m.longname, m.name ) );
}
seen[m.longname] = true;
} );
}
if ( members.tutorials.length ) {
members.tutorials.forEach( function ( t ) {
nav.tutorial.members.push( tutoriallink( t.name ) );
} );
}
if ( members.globals.length ) {
members.globals.forEach( function ( g ) {
if ( g.kind !== 'typedef' && !hasOwnProp.call( seen, g.longname ) ) {
nav.global.members.push( linkto( g.longname, g.name ) );
}
seen[g.longname] = true;
} );
}
var topLevelNav = [];
_.each( nav, function ( entry, name ) {
if ( entry.members.length > 0 && name !== "index" ) {
topLevelNav.push( {
title : entry.title,
link : entry.link,
members : entry.members
} );
}
} );
nav.topLevelNav = topLevelNav;
}
/**
@param {TAFFY} taffyData See <http://taffydb.com/>.
@param {object} opts
@param {Tutorial} tutorials
*/
exports.publish = function ( taffyData, opts, tutorials ) {
data = taffyData;
conf['default'] = conf['default'] || {};
var templatePath = opts.template;
view = new template.Template( templatePath + '/tmpl' );
// claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness
// doesn't try to hand them out later
// var indexUrl = helper.getUniqueFilename( 'index' );
// don't call registerLink() on this one! 'index' is also a valid longname
// var globalUrl = helper.getUniqueFilename( 'global' );
helper.registerLink( 'global', globalUrl );
// set up templating
view.layout = 'layout.tmpl';
// set up tutorials for helper
helper.setTutorials( tutorials );
data = helper.prune( data );
data.sort( 'longname, version, since' );
helper.addEventListeners( data );
var sourceFiles = {};
var sourceFilePaths = [];
data().each( function ( doclet ) {
doclet.attribs = '';
if ( doclet.examples ) {
doclet.examples = doclet.examples.map( function ( example ) {
var caption, code;
if ( example.match( /^\s*<caption>([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i ) ) {
caption = RegExp.$1;
code = RegExp.$3;
}
return {
caption : caption || '',
code : code || example
};
} );
}
if ( doclet.see ) {
doclet.see.forEach( function ( seeItem, i ) {
doclet.see[i] = hashToLink( doclet, seeItem );
} );
}
// build a list of source files
var sourcePath;
var resolvedSourcePath;
if ( doclet.meta ) {
sourcePath = getPathFromDoclet( doclet );
resolvedSourcePath = resolveSourcePath( sourcePath );
sourceFiles[sourcePath] = {
resolved : resolvedSourcePath,
shortened : null
};
sourceFilePaths.push( resolvedSourcePath );
}
} );
// update outdir if necessary, then create outdir
var packageInfo = ( find( {kind : 'package'} ) || [] ) [0];
if ( packageInfo && packageInfo.name ) {
outdir = path.join( outdir, packageInfo.name, packageInfo.version );
}
fs.mkPath( outdir );
// copy static files to outdir
var fromDir = path.join( templatePath, 'static' ),
staticFiles = fs.ls( fromDir, 3 );
staticFiles.forEach( function ( fileName ) {
var toDir = fs.toDir( fileName.replace( fromDir, outdir ) );
fs.mkPath( toDir );
fs.copyFileSync( fileName, toDir );
} );
if ( sourceFilePaths.length ) {
sourceFiles = shortenPaths( sourceFiles, path.commonPrefix( sourceFilePaths ) );
}
data().each( function ( doclet ) {
var url = helper.createLink( doclet );
helper.registerLink( doclet.longname, url );
// replace the filename with a shortened version of the full path
var docletPath;
if ( doclet.meta ) {
docletPath = getPathFromDoclet( doclet );
docletPath = sourceFiles[docletPath].shortened;
if ( docletPath ) {
doclet.meta.filename = docletPath;
}
}
} );
data().each( function ( doclet ) {
var url = helper.longnameToUrl[doclet.longname];
if ( url.indexOf( '#' ) > -1 ) {
doclet.id = helper.longnameToUrl[doclet.longname].split( /#/ ).pop();
}
else {
doclet.id = doclet.name;
}
if ( needsSignature( doclet ) ) {
addSignatureParams( doclet );
addSignatureReturns( doclet );
addAttribs( doclet );
}
} );
// do this after the urls have all been generated
data().each( function ( doclet ) {
doclet.ancestors = getAncestorLinks( doclet );
if ( doclet.kind === 'member' ) {
addSignatureTypes( doclet );
addAttribs( doclet );
}
if ( doclet.kind === 'constant' ) {
addSignatureTypes( doclet );
addAttribs( doclet );
doclet.kind = 'member';
}
} );
var members = helper.getMembers( data );
members.tutorials = tutorials.children;
// add template helpers
view.find = find;
view.linkto = linkto;
view.resolveAuthorLinks = resolveAuthorLinks;
view.tutoriallink = tutoriallink;
view.htmlsafe = htmlsafe;
// once for all
buildNav( members );
view.nav = navigationMaster;
view.navOptions = navOptions;
attachModuleSymbols( find( { kind : ['class', 'function'], longname : {left : 'module:'} } ),
members.modules );
// only output pretty-printed source files if requested; do this before generating any other
// pages, so the other pages can link to the source files
if ( conf['default'].outputSourceFiles ) {
generateSourceFiles( sourceFiles );
}
if ( members.globals.length ) {
generate( 'global', 'Global', [
{kind : 'globalobj'}
], globalUrl );
}
// some browsers can't make the dropdown work
if ( view.nav.module && view.nav.module.members.length ) {
generate( 'module', view.nav.module.title, [
{kind : 'sectionIndex', contents : view.nav.module}
], navigationMaster.module.link );
}
if ( view.nav.class && view.nav.class.members.length ) {
generate( 'class', view.nav.class.title, [
{kind : 'sectionIndex', contents : view.nav.class}
], navigationMaster.class.link );
}
if ( view.nav.namespace && view.nav.namespace.members.length ) {
generate( 'namespace', view.nav.namespace.title, [
{kind : 'sectionIndex', contents : view.nav.namespace}
], navigationMaster.namespace.link );
}
if ( view.nav.mixin && view.nav.mixin.members.length ) {
generate( 'mixin', view.nav.mixin.title, [
{kind : 'sectionIndex', contents : view.nav.mixin}
], navigationMaster.mixin.link );
}
if ( view.nav.external && view.nav.external.members.length ) {
generate( 'external', view.nav.external.title, [
{kind : 'sectionIndex', contents : view.nav.external}
], navigationMaster.external.link );
}
if ( view.nav.tutorial && view.nav.tutorial.members.length ) {
generate( 'tutorial', view.nav.tutorial.title, [
{kind : 'sectionIndex', contents : view.nav.tutorial}
], navigationMaster.tutorial.link );
}
// index page displays information from package.json and lists files
var files = find( {kind : 'file'} ),
packages = find( {kind : 'package'} );
generate( 'index', 'Index',
packages.concat(
[
{kind : 'mainpage', readme : opts.readme, longname : (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page'}
]
).concat( files ),
indexUrl );
// set up the lists that we'll use to generate pages
var classes = taffy( members.classes );
var modules = taffy( members.modules );
var namespaces = taffy( members.namespaces );
var mixins = taffy( members.mixins );
var externals = taffy( members.externals );
for ( var longname in helper.longnameToUrl ) {
if ( hasOwnProp.call( helper.longnameToUrl, longname ) ) {
var myClasses = helper.find( classes, {longname : longname} );
if ( myClasses.length ) {
generate( 'class', 'Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname] );
}
var myModules = helper.find( modules, {longname : longname} );
if ( myModules.length ) {
generate( 'module', 'Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname] );
}
var myNamespaces = helper.find( namespaces, {longname : longname} );
if ( myNamespaces.length ) {
generate( 'namespace', 'Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname] );
}
var myMixins = helper.find( mixins, {longname : longname} );
if ( myMixins.length ) {
generate( 'mixin', 'Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname] );
}
var myExternals = helper.find( externals, {longname : longname} );
if ( myExternals.length ) {
generate( 'external', 'External: ' + myExternals[0].name, myExternals, helper.longnameToUrl[longname] );
}
}
}
// TODO: move the tutorial functions to templateHelper.js
function generateTutorial( title, tutorial, filename ) {
var tutorialData = {
title : title,
header : tutorial.title,
content : tutorial.parse(),
children : tutorial.children,
docs : null
};
var tutorialPath = path.join( outdir, filename ),
html = view.render( 'tutorial.tmpl', tutorialData );
// yes, you can use {@link} in tutorials too!
html = helper.resolveLinks( html ); // turn {@link foo} into <a href="foodoc.html">foo</a>
fs.writeFileSync( tutorialPath, html, 'utf8' );
}
// tutorials can have only one parent so there is no risk for loops
function saveChildren( node ) {
node.children.forEach( function ( child ) {
generateTutorial( 'tutorial' + child.title, child, helper.tutorialToUrl( child.name ) );
saveChildren( child );
} );
}
saveChildren( tutorials );
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load diff

View 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);

View 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);

View 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 );

File diff suppressed because it is too large Load diff

View 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 );

View 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));

View 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.

File diff suppressed because one or more lines are too long

View 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"]);

View 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"
}
})();

View 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));

View 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));

View 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));

View 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"]));

File diff suppressed because it is too large Load diff

View 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);

View file

@ -0,0 +1,960 @@
/*
* Darkstrap v0.9.2
* By danneu (http://github.com/danneu/darkstrap)
* Based off Twitter Bootstrap v2.2.2
*/
tr.warning,
tr.success,
tr.error,
tr.info {
color: #fff;
}
body {
color: #c6c6c6;
background-color: #2f2f2f;
}
a:hover {
color: #1ab2ff;
}
textarea,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
background-color: #cccccc;
}
select {
background-color: #cccccc;
}
.uneditable-input,
.uneditable-textarea {
background-color: #c9c9c9;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
color: #666666;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
color: #666666;
}
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
color: #666666;
}
.control-group.warning .input-prepend .add-on,
.control-group.warning .input-append .add-on {
background-color: #faa732;
}
.control-group.error .input-prepend .add-on,
.control-group.error .input-append .add-on {
background-color: #fc5b5e;
}
.control-group.success .input-prepend .add-on,
.control-group.success .input-append .add-on {
background-color: #5bb75b;
}
.control-group.info .input-prepend .add-on,
.control-group.info .input-append .add-on {
background-color: #3a87ad;
}
.form-actions {
background-color: #444444;
}
.help-block,
.help-inline {
color: #ececec;
}
.table th,
.table td {
border-top: 1px solid #666666;
}
.table tbody + tbody {
border-top: 2px solid #666666;
}
.table .table {
background-color: #2f2f2f;
}
.table-bordered {
border: 1px solid #666666;
}
.table-bordered th,
.table-bordered td {
border-left: 1px solid #666666;
}
.table-striped tbody > tr:nth-child(odd) > td,
.table-striped tbody > tr:nth-child(odd) > th {
background-color: #444444;
}
.table-hover tbody tr:hover td,
.table-hover tbody tr:hover th {
background-color: #666666;
}
.table tbody tr.success td {
background-color: #5bb75b;
}
.table tbody tr.error td {
background-color: #fc5b5e;
}
.table tbody tr.warning td {
background-color: #faa732;
}
.table tbody tr.info td {
background-color: #3a87ad;
}
.table-hover tbody tr.success:hover td {
background-color: #4cad4c;
}
.table-hover tbody tr.error:hover td {
background-color: #fc4245;
}
.table-hover tbody tr.warning:hover td {
background-color: #f99c19;
}
.table-hover tbody tr.info:hover td {
background-color: #34789a;
}
[class^="icon-"],
[class*=" icon-"] {
background-image: url("../img/glyphicons-halflings.png");
}
.icon-white,
.nav-pills > .active > a > [class^="icon-"],
.nav-pills > .active > a > [class*=" icon-"],
.nav-list > .active > a > [class^="icon-"],
.nav-list > .active > a > [class*=" icon-"],
.navbar-inverse .nav > .active > a > [class^="icon-"],
.navbar-inverse .nav > .active > a > [class*=" icon-"],
.dropdown-menu > li > a:hover > [class^="icon-"],
.dropdown-menu > li > a:hover > [class*=" icon-"],
.dropdown-menu > .active > a > [class^="icon-"],
.dropdown-menu > .active > a > [class*=" icon-"],
.dropdown-submenu:hover > a > [class^="icon-"],
.dropdown-submenu:hover > a > [class*=" icon-"] {
background-image: url("../img/glyphicons-halflings-white.png");
}
.btn-link:hover {
color: #1ab2ff;
}
.alert {
background-color: #faa732;
border: 1px solid #fa7d23;
}
.alert-success {
background-color: #5bb75b;
border-color: #5cad4c;
}
.alert-danger,
.alert-error {
background-color: #fc5b5e;
border-color: #fc4c6d;
}
.alert-info {
background-color: #3a87ad;
border-color: #318292;
}
.nav-tabs > .active > a,
.nav-tabs > .active > a:hover {
background-color: #2f2f2f;
}
.nav .dropdown-toggle:hover .caret {
border-top-color: #1ab2ff;
border-bottom-color: #1ab2ff;
}
.navbar-inner {
background-color: #363636;
background-image: -moz-linear-gradient(top, #444444, #222222);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
background-image: -webkit-linear-gradient(top, #444444, #222222);
background-image: -o-linear-gradient(top, #444444, #222222);
background-image: linear-gradient(to bottom, #444444, #222222);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF444444', endColorstr='#FF222222', GradientType=0);
border: 1px solid #030303;
}
.navbar .brand {
color: #c6c6c6;
text-shadow: 0 1px 0 #444444;
}
.navbar-text {
color: #c6c6c6;
}
.navbar-link {
color: #c6c6c6;
}
.navbar-link:hover {
color: white;
}
.navbar .divider-vertical {
border-left: 1px solid #222222;
border-right: 1px solid #444444;
}
.navbar .nav > li > a {
color: #c6c6c6;
text-shadow: 0 1px 0 #444444;
}
.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
color: white;
}
.navbar .nav > .active > a,
.navbar .nav > .active > a:hover,
.navbar .nav > .active > a:focus {
color: white;
background-color: #151515;
}
.navbar .btn-navbar {
background-color: #292929;
background-image: -moz-linear-gradient(top, #373737, #151515);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#373737), to(#151515));
background-image: -webkit-linear-gradient(top, #373737, #151515);
background-image: -o-linear-gradient(top, #373737, #151515);
background-image: linear-gradient(to bottom, #373737, #151515);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF373737', endColorstr='#FF151515', GradientType=0);
border-color: #151515 #151515 black;
*background-color: #151515;
}
.navbar .btn-navbar:hover, .navbar .btn-navbar:active, .navbar .btn-navbar.active, .navbar .btn-navbar.disabled, .navbar .btn-navbar[disabled] {
background-color: #151515;
*background-color: #090909;
}
.navbar .btn-navbar:active, .navbar .btn-navbar.active {
background-color: black \9;
}
.navbar .nav li.dropdown > a:hover .caret {
border-top-color: white;
border-bottom-color: white;
}
.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
background-color: #151515;
color: white;
}
.navbar .nav li.dropdown > .dropdown-toggle .caret {
border-top-color: #c6c6c6;
border-bottom-color: #c6c6c6;
}
.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
border-top-color: white;
border-bottom-color: white;
}
.well {
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
border: 0;
}
.darkwell, .breadcrumb, code, pre, select,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input, textarea, .hero-unit, .progress {
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
border: 0;
}
.breadcrumb {
border: 0;
}
.breadcrumb li {
text-shadow: 0 1px 0 black;
}
.page-header {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
}
h1, h2, h3, h4, h5, h6 {
color: white;
}
h6 {
color: #999;
}
blockquote {
border-left-color: #111;
}
blockquote.pull-right {
border-right-color: #111;
}
hr {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
border-top: none;
}
code {
border: none;
padding: 2px 4px;
}
pre {
border: none;
color: #c6c6c6;
padding: 8px;
}
legend {
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
color: #fff;
}
select,
input[type="text"],
input[type="password"],
input[type="datetime"],
input[type="datetime-local"],
input[type="date"],
input[type="month"],
input[type="time"],
input[type="week"],
input[type="number"],
input[type="email"],
input[type="url"],
input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
color: white;
height: 21px;
}
select:-moz-placeholder,
input[type="text"]:-moz-placeholder,
input[type="password"]:-moz-placeholder,
input[type="datetime"]:-moz-placeholder,
input[type="datetime-local"]:-moz-placeholder,
input[type="date"]:-moz-placeholder,
input[type="month"]:-moz-placeholder,
input[type="time"]:-moz-placeholder,
input[type="week"]:-moz-placeholder,
input[type="number"]:-moz-placeholder,
input[type="email"]:-moz-placeholder,
input[type="url"]:-moz-placeholder,
input[type="search"]:-moz-placeholder,
input[type="tel"]:-moz-placeholder,
input[type="color"]:-moz-placeholder,
.uneditable-input:-moz-placeholder {
color: #666666;
}
select:-ms-input-placeholder,
input[type="text"]:-ms-input-placeholder,
input[type="password"]:-ms-input-placeholder,
input[type="datetime"]:-ms-input-placeholder,
input[type="datetime-local"]:-ms-input-placeholder,
input[type="date"]:-ms-input-placeholder,
input[type="month"]:-ms-input-placeholder,
input[type="time"]:-ms-input-placeholder,
input[type="week"]:-ms-input-placeholder,
input[type="number"]:-ms-input-placeholder,
input[type="email"]:-ms-input-placeholder,
input[type="url"]:-ms-input-placeholder,
input[type="search"]:-ms-input-placeholder,
input[type="tel"]:-ms-input-placeholder,
input[type="color"]:-ms-input-placeholder,
.uneditable-input:-ms-input-placeholder {
color: #666666;
}
select::-webkit-input-placeholder,
input[type="text"]::-webkit-input-placeholder,
input[type="password"]::-webkit-input-placeholder,
input[type="datetime"]::-webkit-input-placeholder,
input[type="datetime-local"]::-webkit-input-placeholder,
input[type="date"]::-webkit-input-placeholder,
input[type="month"]::-webkit-input-placeholder,
input[type="time"]::-webkit-input-placeholder,
input[type="week"]::-webkit-input-placeholder,
input[type="number"]::-webkit-input-placeholder,
input[type="email"]::-webkit-input-placeholder,
input[type="url"]::-webkit-input-placeholder,
input[type="search"]::-webkit-input-placeholder,
input[type="tel"]::-webkit-input-placeholder,
input[type="color"]::-webkit-input-placeholder,
.uneditable-input::-webkit-input-placeholder {
color: #666666;
}
textarea {
color: white;
}
textarea:-moz-placeholder {
color: #666666;
}
textarea:-ms-input-placeholder {
color: #666666;
}
textarea::-webkit-input-placeholder {
color: #666666;
}
select {
height: 29px;
}
.input-prepend .add-on,
.input-append .add-on {
background: #444;
color: #c6c6c6;
border-color: #111;
text-shadow: 0 1px 0 black;
}
.form-actions {
border-top-color: #222;
}
.well .form-actions {
border-top-color: #000;
background-color: rgba(0, 0, 0, 0.3);
margin-left: -17px;
margin-right: -17px;
margin-bottom: -17px;
}
.help-inline,
.help-block {
color: #999;
}
.control-group.warning input, .control-group.warning select, .control-group.warning textarea {
color: #faa732;
border-color: #faa732;
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
}
.control-group.warning input:focus,
.control-group.warning select:focus,
.control-group.warning textarea:focus {
border-color: #faa732;
-webkit-box-shadow: 0 0 6px #faa732;
-moz-box-shadow: 0 0 6px #faa732;
box-shadow: 0 0 6px #faa732;
}
.control-group.warning .control-label,
.control-group.warning .help-block,
.control-group.warning .help-inline {
color: #faa732;
}
.control-group.success input, .control-group.success select, .control-group.success textarea {
color: #5bb75b;
border-color: #5bb75b;
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
}
.control-group.success input:focus,
.control-group.success select:focus,
.control-group.success textarea:focus {
border-color: #5bb75b;
-webkit-box-shadow: 0 0 6px #5bb75b;
-moz-box-shadow: 0 0 6px #5bb75b;
box-shadow: 0 0 6px #5bb75b;
}
.control-group.success .control-label,
.control-group.success .help-block,
.control-group.success .help-inline {
color: #5bb75b;
}
.control-group.error input, .control-group.error select, .control-group.error textarea {
color: #fc5b5e;
border-color: #fc5b5e;
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
}
.control-group.error input:focus,
.control-group.error select:focus,
.control-group.error textarea:focus {
border-color: #fc5b5e;
-webkit-box-shadow: 0 0 6px #fc5b5e;
-moz-box-shadow: 0 0 6px #fc5b5e;
box-shadow: 0 0 6px #fc5b5e;
}
.control-group.error .control-label,
.control-group.error .help-block,
.control-group.error .help-inline {
color: #fc5b5e;
}
.control-group.info input, .control-group.info select, .control-group.info textarea {
color: #3a87ad;
border-color: #3a87ad;
-webkit-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
-moz-box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
}
.control-group.info input:focus,
.control-group.info select:focus,
.control-group.info textarea:focus {
border-color: #3a87ad;
-webkit-box-shadow: 0 0 6px #3a87ad;
-moz-box-shadow: 0 0 6px #3a87ad;
box-shadow: 0 0 6px #3a87ad;
}
.control-group.info .control-label,
.control-group.info .help-block,
.control-group.info .help-inline {
color: #3a87ad;
}
input:focus:invalid,
textarea:focus:invalid,
select:focus:invalid {
border-color: #fc5b5e;
}
input:focus:invalid:focus,
textarea:focus:invalid:focus,
select:focus:invalid:focus {
border-color: #fc5b5e;
box-shadow: 0 0 6px #fc5b5e;
}
.btn-link {
text-shadow: none;
}
.img-polaroid {
background-color: #111;
background-color: rgba(0, 0, 0, 0.3);
}
.nav-tabs .open .dropdown-toggle,
.nav-pills .open .dropdown-toggle,
.nav > .open.active > a:hover {
background-color: rgba(0, 0, 0, 0.25);
border-color: transparent transparent #666666 transparent;
}
.nav > .dropdown.active > a:hover {
color: #fff;
}
.nav-tabs .active .dropdown-toggle .caret,
.nav-pills .active .dropdown-toggle .caret {
border-top-color: #fff;
}
.nav-tabs {
border-bottom: 1px solid #666666;
}
.nav-tabs > .active > a, .nav-tabs > .active > a:hover {
background-color: #2f2f2f;
color: #fff;
border-color: #666666 #666666 transparent #666666;
}
.nav-tabs > li > a:hover {
border-color: #2f2f2f #2f2f2f #666666 #2f2f2f;
background-color: rgba(0, 0, 0, 0.25);
color: #00aaff;
}
.nav-tabs.nav-stacked > li > a, .nav-tabs.nav-stacked > li > a:hover {
border-color: #666;
}
.well > .nav-tabs > .active > a, .well > .nav-tabs > .active > a:hover {
background-color: #202020;
}
.nav-pills > li > a:hover {
background-color: rgba(0, 0, 0, 0.25);
color: #00aaff;
}
.nav-list > li > a,
.nav-list .nav-header {
text-shadow: 0 1px 0 black;
}
.nav-list > li > a:hover {
background-color: rgba(0, 0, 0, 0.25);
color: #00aaff;
}
.nav-list .active > a:hover {
background-color: #0088cc;
color: white;
}
.tabs-below .nav-tabs {
border-top: 1px solid #666666;
}
.tabs-left .nav-tabs {
border-right: 1px solid #666666;
}
.tabs-right .nav-tabs {
border-left: 1px solid #666666;
}
.tabs-below .nav-tabs > li > a:hover {
border-top: 1px solid #666666;
}
.tabs-left .nav-tabs > li > a:hover {
border-color: transparent #666666 transparent transparent;
}
.tabs-right .nav-tabs > li > a:hover {
border-color: transparent transparent transparent #666666;
}
.tabs-below .nav-tabs .active > a,
.tabs-below .nav-tabs .active > a:hover {
border-color: transparent #666666 #666666 #666666;
}
.tabs-left .nav-tabs .active > a,
.tabs-left .nav-tabs .active > a:hover {
border-color: #666666 transparent #666666 #666666;
}
.tabs-right .nav-tabs .active > a,
.tabs-right .nav-tabs .active > a:hover {
border-color: #666666 #666666 #666666 transparent;
}
.nav-list > li > a,
.nav-list .nav-header {
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
}
.nav-tabs > li > a:hover {
border-color: transparent transparent #666666 transparent;
}
.nav > .disabled > a:hover {
color: #999;
}
.nav-list .divider {
background-color: transparent;
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
}
.navbar .brand {
text-shadow: 0 1px 0 black;
}
.navbar .divider-vertical {
border: transparent;
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
-moz-box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
box-shadow: rgba(255, 255, 255, 0.07) 1px 0 0;
border-right: 1px solid #121212;
}
.navbar-inverse .brand {
color: #555;
text-shadow: 0 1px 0 white;
}
.navbar-inverse .brand:hover {
color: #555;
}
.navbar-inverse .navbar-inner {
background: #fafafa;
border: 1px solid #030303;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
background: -moz-linear-gradient(top, white 0%, #999999 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #999999));
background: -webkit-linear-gradient(top, white 0%, #999999 100%);
background: -o-linear-gradient(top, white 0%, #999999 100%);
background: -ms-linear-gradient(top, white 0%, #999999 100%);
background: linear-gradient(to bottom, #ffffff 0%, #999999 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#999999',GradientType=0 );
}
.navbar-inverse .nav > li > a {
color: #555;
}
.navbar-inverse .nav > li > a:hover {
color: #333;
}
.navbar-inverse .nav > .active > a,
.navbar-inverse .nav > .active > a:hover {
background-color: #e5e5e5;
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.125) inset;
color: #555555;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
background-color: #e5e5e5;
color: #555;
}
.navbar-inverse .nav li.dropdown > a:hover .caret {
border-top-color: #555;
color: #555;
}
.navbar-inverse .nav > li > a:focus,
.navbar-inverse .nav > li > a:hover {
background-color: transparent;
color: #333;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
background-color: #e5e5e5;
color: #555;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
border-bottom-color: #555;
border-top-color: #555;
color: #555;
}
.navbar-inverse .navbar-search .search-query {
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.6) inset;
background-color: white;
color: #333;
}
.navbar-inverse .navbar-search input.search-query:focus {
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.6) inset, 0 0 8px rgba(82, 168, 236, 0.6);
box-shadow: 0 3px 8px rgba(0, 0, 0, 0.6) inset, 0 0 8px rgba(82, 168, 236, 0.9);
padding: 4px 14px;
outline: 0 none;
}
.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
border-bottom-color: #555;
border-top-color: #555;
}
.navbar-inverse .nav li.dropdown > a:hover .caret {
border-bottom-color: #333;
border-top-color: #333;
}
.navbar-inverse .navbar-search .search-query:-moz-placeholder {
color: #999;
}
.pagination ul > li > a,
.pagination ul > li > span {
background: transparent;
border-color: #666;
}
.pagination ul > li > a:hover,
.pagination ul > .active > a,
.pagination ul > .active > span {
background-color: rgba(0, 0, 0, 0.25);
}
.pager li > a, .pager li > span {
background-color: transparent;
border-color: #666;
}
.pager li > a:hover {
background-color: rgba(0, 0, 0, 0.25);
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > span {
background-color: transparent;
}
.label,
.badge {
text-shadow: 1px 1px 0 black;
box-shadow: 1px 1px 0 black;
}
.label-inverse,
.badge-inverse {
background-color: #111;
}
.hero-unit {
background: #111;
color: #ccc;
}
.thumbnail {
border-color: #666;
box-shadow: 0 1px 3px black;
}
.thumbnail .caption {
color: #999;
}
.alert {
color: white;
border-color: #a86404;
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
}
.alert h1, .alert h2, .alert h3, .alert h4, .alert h5, .alert h6 {
color: #c17305;
}
.alert-error {
border-color: #d40408;
}
.alert-error h1, .alert-error h2, .alert-error h3, .alert-error h4, .alert-error h5, .alert-error h6 {
color: #ed0409;
}
.alert-success {
border-color: #2d662d;
}
.alert-success h1, .alert-success h2, .alert-success h3, .alert-success h4, .alert-success h5, .alert-success h6 {
color: #347834;
}
.alert-info {
border-color: #1a3c4e;
}
.alert-info h1, .alert-info h2, .alert-info h3, .alert-info h4, .alert-info h5, .alert-info h6 {
color: #204B61;
}
select::-webkit-scrollbar {
-webkit-appearance: none;
width: 11px;
}
select::-webkit-scrollbar-thumb {
border-radius: 8px;
border: 2px solid #202020;
background-color: rgba(0, 0, 0, 0.5);
}
.modal {
background-color: #444;
}
.modal-header {
border-bottom: 1px solid #222222;
}
.modal-body p {
color: #c6c6c6;
}
.modal-footer {
background-color: #373737;
border-top: 1px solid #222222;
-moz-box-shadow: 0 1px 0 #333333 inset;
-webkit-box-shadow: 0 1px 0 #333333 inset;
-o-box-shadow: 0 1px 0 #333333 inset;
box-shadow: 0 1px 0 #333333 inset;
}
.popover {
background: #444;
border: 1px solid rgba(0, 0, 0, 0.5);
border: 1px solid black;
}
.popover-title {
background: #373737;
border-bottom-color: #222;
}
.popover.top .arrow:after {
border-top-color: #444;
}
.popover.right .arrow:after {
border-right-color: #444;
}
.popover.bottom .arrow:after {
border-bottom-color: #444;
}
.popover.left .arrow:after {
border-left-color: #444;
}

View file

@ -0,0 +1,132 @@
/* Tomorrow Theme */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* Pretty printing styles. Used with prettify.js. */
/* SPAN elements with the classes below are added by prettyprint. */
/* plain text */
.pln {
color: #4d4d4c; }
@media screen {
/* string content */
.str {
color: #718c00; }
/* a keyword */
.kwd {
color: #8959a8; }
/* a comment */
.com {
color: #8e908c; }
/* a type name */
.typ {
color: #4271ae; }
/* a literal value */
.lit {
color: #f5871f; }
/* punctuation */
.pun {
color: #4d4d4c; }
/* lisp open bracket */
.opn {
color: #4d4d4c; }
/* lisp close bracket */
.clo {
color: #4d4d4c; }
/* a markup tag name */
.tag {
color: #c82829; }
/* a markup attribute name */
.atn {
color: #f5871f; }
/* a markup attribute value */
.atv {
color: #3e999f; }
/* a declaration */
.dec {
color: #f5871f; }
/* a variable name */
.var {
color: #c82829; }
/* a function name */
.fun {
color: #4271ae; } }
/* Use higher contrast and text-weight for printable form. */
@media print, projection {
.str {
color: #060; }
.kwd {
color: #006;
font-weight: bold; }
.com {
color: #600;
font-style: italic; }
.typ {
color: #404;
font-weight: bold; }
.lit {
color: #044; }
.pun, .opn, .clo {
color: #440; }
.tag {
color: #006;
font-weight: bold; }
.atn {
color: #404; }
.atv {
color: #060; } }
/* Style */
/*
pre.prettyprint {
background: white;
font-family: Menlo, Monaco, Consolas, monospace;
font-size: 12px;
line-height: 1.5;
border: 1px solid #ccc;
padding: 10px; }
*/
/* Specify class=linenums on a pre to get line numbering */
ol.linenums {
margin-top: 0;
margin-bottom: 0; }
/* IE indents via margin-left */
li.L0,
li.L1,
li.L2,
li.L3,
li.L4,
li.L5,
li.L6,
li.L7,
li.L8,
li.L9 {
/* */ }
/* Alternate shading for lines */
li.L1,
li.L3,
li.L5,
li.L7,
li.L9 {
/* */ }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,345 @@
/* global styles */
.sunlight-container {
clear: both !important;
position: relative !important;
margin: 10px 0 !important;
}
.sunlight-code-container {
clear: both !important;
position: relative !important;
border: none;
border-color: #626262 !important;
background-color: #262626 !important;
}
.sunlight-highlighted, .sunlight-container, .sunlight-container textarea {
font-family: Consolas, Inconsolata, Monaco, "Courier New" !important;
font-size: 12px !important;
line-height: 15px !important;
}
.sunlight-highlighted, .sunlight-container textarea {
color: #FFFFFF !important;
margin: 0 !important;
}
.sunlight-container textarea {
padding-left: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
padding-right: 0 !important;
}
.sunlight-code-container > .sunlight-highlighted {
white-space: pre;
overflow-x: auto;
overflow-y: hidden; /* ie requires this wtf? */
}
.sunlight-highlighted {
z-index: 1;
position: relative;
}
.sunlight-highlighted * {
background: transparent;
}
.sunlight-line-number-margin {
float: left !important;
margin-right: 5px !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
padding: 0 !important;
padding-right: 4px !important;
padding-left: 4px !important;
border-right: 1px solid #9A9A9A !important;
background-color: #3E3E3E !important;
color: #9A9A9A !important;
text-align: right !important;
position: relative;
z-index: 3;
}
.sunlight-highlighted a, .sunlight-line-number-margin a {
border: none !important;
text-decoration: none !important;
font-style: normal !important;
padding: 0 !important;
}
.sunlight-line-number-margin a {
color: inherit !important;
}
.sunlight-line-highlight-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 0;
}
.sunlight-line-highlight-overlay div {
height: 15px;
width: 100%;
}
.sunlight-line-highlight-overlay .sunlight-line-highlight-active {
background-color: #4B4B4B;
}
/* menu */
.sunlight-menu {
background-color: #FFFFCC;
color: #000000;
}
.sunlight-menu ul {
margin: 0 !important;
padding: 0 !important;
list-style-type: none !important;
}
.sunlight-menu li {
float: right !important;
margin-left: 5px !important;
}
.sunlight-menu a, .sunlight-menu img {
color: #000099 !important;
text-decoration: none !important;
border: none !important;
}
.sunlight-string,
.sunlight-char,
.sunlight-heredoc,
.sunlight-heredocDeclaration,
.sunlight-nowdoc,
.sunlight-longString,
.sunlight-rawString,
.sunlight-binaryString,
.sunlight-verbatimString,
.sunlight-rawLongString,
.sunlight-binaryLongString,
.sunlight-diff .sunlight-added {
color: #55EB54 !important;
}
.sunlight-operator,
.sunlight-punctuation,
.sunlight-delimiter {
color: #B1EDEC !important;
}
.sunlight-ident,
.sunlight-diff .sunlight-unchanged {
color: #E0E0E0 !important;
font-weight: bold !important;
}
.sunlight-comment,
.sunlight-xmlDocCommentContent,
.sunlight-nginx .sunlight-ssiCommand,
.sunlight-sln .sunlight-formatDeclaration,
.sunlight-diff .sunlight-mergeHeader,
.sunlight-diff .sunlight-noNewLine {
color: #787D31 !important;
}
.sunlight-number,
.sunlight-cdata,
.sunlight-guid,
.sunlight-diff .sunlight-modified {
color: #F7BA7E !important;
font-weight: bold !important;
}
.sunlight-named-ident,
.sunlight-xml .sunlight-attribute,
.sunlight-constant,
.sunlight-javascript .sunlight-globalVariable,
.sunlight-globalObject,
.sunlight-css .sunlight-id,
.sunlight-python .sunlight-attribute,
.sunlight-nginx .sunlight-context,
.sunlight-httpd .sunlight-context,
.sunlight-lisp .sunlight-declarationSpecifier,
.sunlight-erlang .sunlight-userDefinedFunction,
.sunlight-diff .sunlight-removed {
color: #FBBDEE !important;
font-weight: bold !important;
}
.sunlight-keyword,
.sunlight-languageConstruct,
.sunlight-specialOperator,
.sunlight-xml .sunlight-tagName,
.sunlight-xml .sunlight-operator,
.sunlight-bash .sunlight-command,
.sunlight-erlang .sunlight-moduleAttribute {
color: #A3CCF7 !important;
font-weight: bold !important;
}
.sunlight-shortOpenTag,
.sunlight-openTag,
.sunlight-closeTag,
.sunlight-xmlOpenTag,
.sunlight-xmlCloseTag,
.sunlight-aspOpenTag,
.sunlight-aspCloseTag,
.sunlight-label,
.sunlight-css .sunlight-importantFlag {
background-color: #7373C1 !important;
}
.sunlight-content {
color: #FFFFFF !important;
font-weight: bold !important;
}
.sunlight-function,
.sunlight-globalFunction,
.sunlight-objective-c .sunlight-messageDestination,
.sunlight-ruby .sunlight-specialFunction,
.sunlight-6502asm .sunlight-illegalOpcode,
.sunlight-powershell .sunlight-switch,
.sunlight-lisp .sunlight-macro,
.sunlight-lisp .sunlight-specialForm,
.sunlight-lisp .sunlight-type,
.sunlight-sln .sunlight-sectionName,
.sunlight-diff .sunlight-header {
color: #C8BBF1 !important;
font-weight: bold !important;
}
.sunlight-variable,
.sunlight-environmentVariable,
.sunlight-specialVariable,
.sunlight-objective-c .sunlight-messageArgumentName,
.sunlight-lisp .sunlight-globalVariable,
.sunlight-ruby .sunlight-globalVariable,
.sunlight-ruby .sunlight-instanceVariable {
color: #F5E5B0 !important;
font-weight: bold !important;
}
.sunlight-regexLiteral,
.sunlight-lisp .sunlight-operator,
.sunlight-6502asm .sunlight-pseudoOp,
.sunlight-erlang .sunlight-macro,
.sunlight-diff .sunlight-rangeInfo {
color: #E0F16A !important;
}
.sunlight-specialVariable {
font-style: italic !important;
font-weight: bold !important;
}
.sunlight-csharp .sunlight-pragma,
.sunlight-preprocessorDirective,
.sunlight-vb .sunlight-compilerDirective {
color: #666363 !important;
font-style: italic !important;
}
.sunlight-xmlDocCommentMeta,
.sunlight-java .sunlight-annotation,
.sunlight-scala .sunlight-annotation,
.sunlight-docComment {
color: #666363 !important;
}
.sunlight-quotedIdent,
.sunlight-ruby .sunlight-subshellCommand,
.sunlight-lisp .sunlight-keywordArgument,
.sunlight-haskell .sunlight-infixOperator,
.sunlight-erlang .sunlight-quotedAtom {
color: #F8CA16 !important;
}
/* html/xml */
.sunlight-xml .sunlight-tagName,
.sunlight-xml .sunlight-operator,
.sunlight-xml .sunlight-attribute {
font-weight: normal !important;
}
.sunlight-doctype {
color: #DEB9B2 !important;
font-style: italic !important;
}
.sunlight-xml .sunlight-entity {
background-color: #E6E585 !important;
color: #000000 !important;
}
/* javascript */
.sunlight-javascript .sunlight-reservedWord {
font-style: italic !important;
}
/* css */
.sunlight-css .sunlight-element {
color: #E9EE97 !important;
}
.sunlight-css .sunlight-microsoftFilterPrefix {
color: #C9FF9F !important;
}
.sunlight-css .sunlight-rule {
color: #0099FF !important;
}
.sunlight-css .sunlight-class {
color: #E78282 !important;
}
.sunlight-css .sunlight-pseudoClass, .sunlight-css .sunlight-pseudoElement {
color: #73D693 !important;
}
/* bash */
.sunlight-bash .sunlight-hashBang {
color: #FFFF00 !important;
}
.sunlight-bash .sunlight-verbatimCommand {
color: #BBA4EE !important;
}
.sunlight-bash .sunlight-variable,
.sunlight-bash .sunlight-specialVariable {
color: #ED8585 !important;
}
/* python */
.sunlight-python .sunlight-specialMethod {
font-weight: bold !important;
color: #B0A3C2;
}
/* ruby */
.sunlight-ruby .sunlight-symbol {
font-weight: bold !important;
color: #90EEA2 !important;
}
/* brainfuck */
.sunlight-brainfuck {
font-weight: bold !important;
color: #000000 !important;
}
.sunlight-brainfuck .sunlight-increment {
background-color: #FF9900 !important;
}
.sunlight-brainfuck .sunlight-decrement {
background-color: #FF99FF !important;
}
.sunlight-brainfuck .sunlight-incrementPointer {
background-color: #FFFF99 !important;
}
.sunlight-brainfuck .sunlight-decrementPointer {
background-color: #66CCFF !important;
}
.sunlight-brainfuck .sunlight-read {
background-color: #FFFFFF !important;
}
.sunlight-brainfuck .sunlight-write {
background-color: #99FF99 !important;
}
.sunlight-brainfuck .sunlight-openLoop, .sunlight-brainfuck .sunlight-closeLoop {
background-color: #FFFFFF !important;
}
/* 6502 asm */
.sunlight-6502asm .sunlight-label {
background: none !important;
color: #FFFFFF !important;
text-decoration: underline !important;
}
/* lisp */
.sunlight-lisp .sunlight-macro {
font-style: italic !important;
}
/* erlang */
.sunlight-erlang .sunlight-atom {
color: #FFFFFF !important;
font-weight: bold !important;
}

View file

@ -0,0 +1,344 @@
/* global styles */
.sunlight-container {
clear: both !important;
position: relative !important;
margin: 10px 0 !important;
}
.sunlight-code-container {
clear: both !important;
position: relative !important;
border: none;
border-color: #969696 !important;
background-color: #FFFFFF !important;
}
.sunlight-highlighted, .sunlight-container, .sunlight-container textarea {
font-family: Consolas, Inconsolata, Monaco, "Courier New" !important;
font-size: 12px !important;
line-height: 15px !important;
}
.sunlight-highlighted, .sunlight-container textarea {
color: #000000 !important;
margin: 0 !important;
}
.sunlight-container textarea {
padding-left: 0 !important;
margin-left: 0 !important;
margin-right: 0 !important;
padding-right: 0 !important;
}
.sunlight-code-container > .sunlight-highlighted {
white-space: pre;
overflow-x: auto;
overflow-y: hidden; /* ie requires this wtf? */
}
.sunlight-highlighted {
z-index: 1;
position: relative;
}
.sunlight-highlighted * {
background: transparent;
}
.sunlight-line-number-margin {
float: left !important;
margin-right: 5px !important;
margin-top: 0 !important;
margin-bottom: 0 !important;
padding: 0 !important;
padding-right: 4px !important;
padding-left: 4px !important;
border-right: 1px solid #CCCCCC !important;
background-color: #EEEEEE !important;
color: #848484 !important;
text-align: right !important;
position: relative;
z-index: 3;
}
.sunlight-highlighted a, .sunlight-line-number-margin a {
border: none !important;
text-decoration: none !important;
font-weight: normal !important;
font-style: normal !important;
padding: 0 !important;
}
.sunlight-line-number-margin a {
color: inherit !important;
}
.sunlight-line-highlight-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 0;
}
.sunlight-line-highlight-overlay div {
height: 15px;
width: 100%;
}
.sunlight-line-highlight-overlay .sunlight-line-highlight-active {
background-color: #E7FCFA;
}
/* menu */
.sunlight-menu {
background-color: #FFFFCC;
color: #000000;
}
.sunlight-menu ul {
margin: 0 !important;
padding: 0 !important;
list-style-type: none !important;
}
.sunlight-menu li {
float: right !important;
margin-left: 5px !important;
}
.sunlight-menu a, .sunlight-menu img {
color: #000099 !important;
text-decoration: none !important;
border: none !important;
}
.sunlight-string,
.sunlight-char,
.sunlight-heredoc,
.sunlight-heredocDeclaration,
.sunlight-nowdoc,
.sunlight-longString,
.sunlight-rawString,
.sunlight-binaryString,
.sunlight-rawLongString,
.sunlight-binaryLongString,
.sunlight-verbatimString,
.sunlight-diff .sunlight-removed {
color: #990000 !important;
}
.sunlight-ident,
.sunlight-operator,
.sunlight-punctuation,
.sunlight-delimiter,
.sunlight-diff .sunlight-unchanged {
color: #000000 !important;
}
.sunlight-comment,
.sunlight-xmlDocCommentContent,
.sunlight-nginx .sunlight-ssiCommand,
.sunlight-sln .sunlight-formatDeclaration,
.sunlight-diff .sunlight-added {
color: #009900 !important;
}
.sunlight-number,
.sunlight-guid,
.sunlight-cdata {
color: #CC6600 !important;
}
.sunlight-named-ident,
.sunlight-constant,
.sunlight-javascript .sunlight-globalVariable,
.sunlight-globalObject,
.sunlight-python .sunlight-attribute,
.sunlight-nginx .sunlight-context,
.sunlight-httpd .sunlight-context,
.sunlight-haskell .sunlight-class,
.sunlight-haskell .sunlight-type,
.sunlight-lisp .sunlight-declarationSpecifier,
.sunlight-erlang .sunlight-userDefinedFunction,
.sunlight-diff .sunlight-header {
color: #2B91AF !important;
}
.sunlight-keyword,
.sunlight-languageConstruct,
.sunlight-css
.sunlight-element,
.sunlight-bash .sunlight-command,
.sunlight-specialOperator,
.sunlight-erlang .sunlight-moduleAttribute,
.sunlight-xml .sunlight-tagName,
.sunlight-xml .sunlight-operator,
.sunlight-diff .sunlight-modified {
color: #0000FF !important;
}
.sunlight-shortOpenTag,
.sunlight-openTag,
.sunlight-closeTag,
.sunlight-xmlOpenTag,
.sunlight-xmlCloseTag,
.sunlight-aspOpenTag,
.sunlight-aspCloseTag,
.sunlight-label,
.sunlight-css .sunlight-importantFlag {
background-color: #FFFF99 !important;
color: #000000 !important;
}
.sunlight-function,
.sunlight-globalFunction,
.sunlight-ruby .sunlight-specialFunction,
.sunlight-objective-c .sunlight-messageDestination,
.sunlight-6502asm .sunlight-illegalOpcode,
.sunlight-powershell .sunlight-switch,
.sunlight-lisp .sunlight-macro,
.sunlight-lisp .sunlight-specialForm,
.sunlight-lisp .sunlight-type,
.sunlight-sln .sunlight-sectionName,
.sunlight-diff .sunlight-rangeInfo {
color: #B069AF !important;
}
.sunlight-variable,
.sunlight-specialVariable,
.sunlight-environmentVariable,
.sunlight-objective-c .sunlight-messageArgumentName,
.sunlight-lisp .sunlight-globalVariable,
.sunlight-ruby .sunlight-globalVariable,
.sunlight-ruby .sunlight-instanceVariable,
.sunlight-sln .sunlight-operator {
color: #325484 !important;
}
.sunlight-regexLiteral,
.sunlight-lisp .sunlight-operator,
.sunlight-6502asm .sunlight-pseudoOp,
.sunlight-erlang .sunlight-macro {
color: #FF00B2 !important;
}
.sunlight-specialVariable {
font-style: italic !important;
font-weight: bold !important;
}
.sunlight-csharp .sunlight-pragma,
.sunlight-preprocessorDirective,
.sunlight-vb .sunlight-compilerDirective,
.sunlight-diff .sunlight-mergeHeader,
.sunlight-diff .sunlight-noNewLine {
color: #999999 !important;
font-style: italic !important;
}
.sunlight-xmlDocCommentMeta,
.sunlight-java .sunlight-annotation,
.sunlight-scala .sunlight-annotation,
.sunlight-docComment {
color: #808080 !important;
}
.sunlight-quotedIdent,
.sunlight-ruby .sunlight-subshellCommand,
.sunlight-lisp .sunlight-keywordArgument,
.sunlight-haskell .sunlight-infixOperator,
.sunlight-erlang .sunlight-quotedAtom {
color: #999900 !important;
}
/* xml */
.sunlight-xml .sunlight-string {
color: #990099 !important;
}
.sunlight-xml .sunlight-attribute {
color: #FF0000 !important;
}
.sunlight-xml .sunlight-entity {
background-color: #EEEEEE !important;
color: #000000 !important;
border: 1px solid #000000 !important;
}
.sunlight-xml .sunlight-doctype {
color: #2B91AF !important;
}
/* javascript */
.sunlight-javascript .sunlight-reservedWord {
font-style: italic !important;
}
/* css */
.sunlight-css .sunlight-microsoftFilterPrefix {
color: #FF00FF !important;
}
.sunlight-css .sunlight-rule {
color: #0099FF !important;
}
.sunlight-css .sunlight-keyword {
color: #4E65B8 !important;
}
.sunlight-css .sunlight-class {
color: #FF0000 !important;
}
.sunlight-css .sunlight-id {
color: #8A8E13 !important;
}
.sunlight-css .sunlight-pseudoClass,
.sunlight-css .sunlight-pseudoElement {
color: #368B87 !important;
}
/* bash */
.sunlight-bash .sunlight-hashBang {
color: #3D97F5 !important;
}
.sunlight-bash .sunlight-verbatimCommand {
color: #999900 !important;
}
.sunlight-bash .sunlight-variable,
.sunlight-bash .sunlight-specialVariable {
color: #FF0000 !important;
}
/* python */
.sunlight-python .sunlight-specialMethod {
font-weight: bold !important;
color: #A07DD3;
}
/* ruby */
.sunlight-ruby .sunlight-symbol {
font-weight: bold !important;
color: #ED7272 !important;
}
/* brainfuck */
.sunlight-brainfuck {
font-weight: bold !important;
color: #000000 !important;
}
.sunlight-brainfuck .sunlight-increment {
background-color: #FF9900 !important;
}
.sunlight-brainfuck .sunlight-decrement {
background-color: #FF99FF !important;
}
.sunlight-brainfuck .sunlight-incrementPointer {
background-color: #FFFF99 !important;
}
.sunlight-brainfuck .sunlight-decrementPointer {
background-color: #66CCFF !important;
}
.sunlight-brainfuck .sunlight-read {
background-color: #FFFFFF !important;
}
.sunlight-brainfuck .sunlight-write {
background-color: #99FF99 !important;
}
.sunlight-brainfuck .sunlight-openLoop, .sunlight-brainfuck .sunlight-closeLoop {
background-color: #FFFFFF !important;
}
/* 6502 asm */
.sunlight-6502asm .sunlight-label {
font-weight: bold !important;
color: #000000 !important;
background: none !important;
}
/* lisp */
.sunlight-lisp .sunlight-macro {
font-style: italic !important;
}
/* erlang */
.sunlight-erlang .sunlight-atom {
font-weight: bold !important;
}

View file

@ -0,0 +1,159 @@
<?js
var self = this;
docs.forEach(function(doc, i) {
?>
<?js if (doc.kind === 'mainpage' || (doc.kind === 'package')) { ?>
<?js if (i === 0){ ?>
<span class="page-title"><?js= title ?></span>
<?js } ?>
<?js= self.partial('mainpage.tmpl', doc) ?>
<?js } else if (doc.kind === 'source') { ?>
<h1 class="page-title"><?js= title ?></h1>
<?js= self.partial('source.tmpl', doc) ?>
<?js } else { ?>
<h1 class="page-title"><?js= title ?></h1>
<section>
<header>
<h2><?js if (doc.ancestors && doc.ancestors.length) { ?>
<span class="ancestors"><?js= doc.ancestors.join('') ?></span>
<?js } ?>
<?js= doc.name ?>
<?js if (doc.variation) { ?>
<sup class="variation"><?js= doc.variation ?></sup>
<?js } ?></h2>
<?js if (doc.classdesc) { ?>
<div class="class-description"><?js= doc.classdesc ?></div>
<?js } ?>
</header>
<article>
<div class="container-overview">
<?js if (doc.kind === 'module' && doc.module) { ?>
<?js= self.partial('method.tmpl', doc.module) ?>
<?js } ?>
<?js if (doc.kind === 'class') { ?>
<?js= self.partial('method.tmpl', doc) ?>
<?js } else { ?>
<?js if (doc.description) { ?>
<div class="description"><?js= doc.description ?></div>
<?js } ?>
<?js= self.partial('details.tmpl', doc) ?>
<?js if (doc.examples && doc.examples.length) { ?>
<h3>Example<?js= doc.examples.length > 1? 's':'' ?></h3>
<?js= self.partial('examples.tmpl', doc.examples) ?>
<?js } ?>
<?js } ?>
</div>
<?js if (doc.augments && doc.augments.length) { ?>
<h3 class="subsection-title">Extends</h3>
<ul><?js doc.augments.forEach(function(a) { ?>
<li><?js= self.linkto(a, a) ?></li>
<?js }); ?></ul>
<?js } ?>
<?js if (doc.mixes && doc.mixes.length) { ?>
<h3 class="subsection-title">Mixes In</h3>
<ul><?js doc.mixes.forEach(function(a) { ?>
<li><?js= self.linkto(a, a) ?></li>
<?js }); ?></ul>
<?js } ?>
<?js if (doc.requires && doc.requires.length) { ?>
<h3 class="subsection-title">Requires</h3>
<ul><?js doc.requires.forEach(function(r) { ?>
<li><?js= self.linkto(r, r) ?></li>
<?js }); ?></ul>
<?js } ?>
<?js
var classes = self.find({kind: 'class', memberof: doc.longname});
if (doc.kind !== 'globalobj' && classes && classes.length) {
?>
<h3 class="subsection-title">Classes</h3>
<dl><?js classes.forEach(function(c) { ?>
<dt><?js= self.linkto(c.longname, c.name) ?></dt>
<dd><?js if (c.summary) { ?><?js= c.summary ?><?js } ?></dd>
<?js }); ?></dl>
<?js } ?>
<?js
var namespaces = self.find({kind: 'namespace', memberof: doc.longname});
if (doc.kind !== 'globalobj' && namespaces && namespaces.length) {
?>
<h3 class="subsection-title">Namespaces</h3>
<dl><?js namespaces.forEach(function(n) { ?>
<dt><a href="namespaces.html#<?js= n.longname ?>"><?js= self.linkto(n.longname, n.name) ?></a></dt>
<dd><?js if (n.summary) { ?><?js= n.summary ?><?js } ?></dd>
<?js }); ?></dl>
<?js } ?>
<?js
var members = self.find({kind: 'member', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
if (members && members.length && members.forEach) {
?>
<h3 class="subsection-title">Members</h3>
<dl><?js members.forEach(function(p) { ?>
<?js= self.partial('members.tmpl', p) ?>
<?js }); ?></dl>
<?js } ?>
<?js
var methods = self.find({kind: 'function', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
if (methods && methods.length && methods.forEach) {
?>
<h3 class="subsection-title">Methods</h3>
<dl><?js methods.forEach(function(m) { ?>
<?js= self.partial('method.tmpl', m) ?>
<?js }); ?></dl>
<?js } ?>
<?js
var typedefs = self.find({kind: 'typedef', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
if (typedefs && typedefs.length && typedefs.forEach) {
?>
<h3 class="subsection-title">Type Definitions</h3>
<dl><?js typedefs.forEach(function(e) {
if (e.signature) {
?>
<?js= self.partial('method.tmpl', e) ?>
<?js
}
else {
?>
<?js= self.partial('members.tmpl', e) ?>
<?js
}
}); ?></dl>
<?js } ?>
<?js
var events = self.find({kind: 'event', memberof: title === 'Global' ? {isUndefined: true} : doc.longname});
if (events && events.length && events.forEach) {
?>
<h3 class="subsection-title">Events</h3>
<dl><?js events.forEach(function(e) { ?>
<?js= self.partial('method.tmpl', e) ?>
<?js }); ?></dl>
<?js } ?>
</article>
</section>
<?js } ?>
<?js }); ?>

View file

@ -0,0 +1,98 @@
<?js
var data = obj;
var self = this;
?>
<dl class="details">
<?js
var properties = data.properties;
if (properties && properties.length && properties.forEach) {
?>
<h5 class="subsection-title">Properties:</h5>
<dl><?js= this.partial('properties.tmpl', properties) ?></dl>
<?js } ?>
<?js if (data.version) {?>
<dt class="tag-version">Version:</dt>
<dd class="tag-version"><ul class="dummy"><li><?js= version ?></li></ul></dd>
<?js } ?>
<?js if (data.since) {?>
<dt class="tag-since">Since:</dt>
<dd class="tag-since"><ul class="dummy"><li><?js= since ?></dd>
<?js } ?>
<?js if (data.inherited && data.inherits) { ?>
<dt class="inherited-from">Inherited From:</dt>
<dd class="inherited-from"><ul class="dummy"><li>
<?js= this.linkto(data.inherits, this.htmlsafe(data.inherits)) ?>
</li></dd>
<?js } ?>
<?js if (data.deprecated) { ?>
<dt class="important tag-deprecated">Deprecated:</dt><?js
if (data.deprecated === true) { ?><dd class="yes-def tag-deprecated"><ul class="dummy"><li>Yes</li></ul></dd><?js }
else { ?><dd><ul class="dummy"><li><?js= data.deprecated ?></li><ul></dd><?js }
?>
<?js } ?>
<?js if (data.author && author.length) {?>
<dt class="tag-author">Author:</dt>
<dd class="tag-author">
<ul><?js author.forEach(function(a) { ?>
<li><?js= self.resolveAuthorLinks(a) ?></li>
<?js }); ?></ul>
</dd>
<?js } ?>
<?js if (data.copyright) {?>
<dt class="tag-copyright">Copyright:</dt>
<dd class="tag-copyright"><ul class="dummy"><li><?js= copyright ?></li></ul></dd>
<?js } ?>
<?js if (data.license) {?>
<dt class="tag-license">License:</dt>
<dd class="tag-license"><ul class="dummy"><li><?js= license ?></li></ul></dd>
<?js } ?>
<?js if (data.defaultvalue) {?>
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li><?js= data.defaultvalue ?></li></ul></dd>
<?js } ?>
<?js if (data.meta) {?>
<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<?js= self.linkto(meta.filename) ?><?js if (this.navOptions.linenums) {?>, <?js= self.linkto(meta.filename, 'line ' + meta.lineno, null, 'sunlight-1-line-' + meta.lineno) ?><?js } ?>
</li></ul></dd>
<?js } ?>
<?js if (data.tutorials && tutorials.length) {?>
<dt class="tag-tutorial">Tutorials:</dt>
<dd class="tag-tutorial">
<ul><?js tutorials.forEach(function(t) { ?>
<li><?js= self.tutoriallink(t) ?></li>
<?js }); ?></ul>
</dd>
<?js } ?>
<?js if (data.see && see.length) {?>
<dt class="tag-see">See:</dt>
<dd class="tag-see">
<ul><?js see.forEach(function(s) { ?>
<li><?js= self.linkto(s) ?></li>
<?js }); ?></ul>
</dd>
<?js } ?>
<?js if (data.todo && todo.length) {?>
<dt class="tag-todo">To Do:</dt>
<dd class="tag-todo">
<ul><?js todo.forEach(function(t) { ?>
<li><?js= t ?></li>
<?js }); ?></ul>
</dd>
<?js } ?>
</dl>

View file

@ -0,0 +1,2 @@
<?js var data = obj; ?>
<pre class="sunlight-highlight-javascript"><?js= data ?></pre>

View file

@ -0,0 +1,11 @@
<?js
var data = obj;
data.forEach(function(example) {
if (example.caption) {
?>
<p class="code-caption"><?js= example.caption ?></p>
<?js } ?>
<pre class="sunlight-highlight-javascript"><?js= example.code ?></pre>
<?js
});
?>

View file

@ -0,0 +1,30 @@
<?js
var data = obj;
?>
<?js if (data.description && data.type && data.type.names) { ?>
<dl>
<dt>
<div class="param-desc">
<?js= data.description ?>
</div>
</dt>
<dt>
<dl>
<dt>
Type
</dt>
<dd>
<?js= this.partial('type.tmpl', data.type.names) ?>
</dd>
</dl>
</dt>
</dl>
<?js } else { ?>
<div class="param-desc">
<?js if (data.description) { ?>
<?js= data.description ?>
<?js } else if (data.type && data.type.names) { ?>
<?js= this.partial('type.tmpl', data.type.names) ?>
<?js } ?>
</div>
<?js } ?>

View file

@ -0,0 +1,4 @@
<?js var data = obj; ?>
<li>
<?js= data ?>
</li>

View file

@ -0,0 +1,142 @@
<!DOCTYPE html>
<?js var that = this; ?>
<html lang="en">
<head>
<meta charset="utf-8">
<title><?js= this.navOptions.systemName ?> <?js= title ?></title>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<?js if (this.navOptions.theme === "darkstrap"){ ?>
<link type="text/css" rel="stylesheet" href="styles/site.cyborg.css">
<link type="text/css" rel="stylesheet" href="styles/darkstrap.css">
<?js } else { ?>
<link type="text/css" rel="stylesheet" href="styles/site.<?js= this.navOptions.theme ?>.css">
<?js } ?>
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top <?js= this.navOptions.inverseNav ? 'navbar-inverse' : '' ?>">
<div class="navbar-inner">
<a class="brand" href="<?js= this.nav.index.link ?>"><?js= this.nav.index.title ?></a>
<ul class="nav">
<?js this.nav.topLevelNav.forEach(function(entry){ ?>
<li class="dropdown">
<a href="<?js= entry.link ?>" class="dropdown-toggle" data-toggle="dropdown"><?js= entry.title ?><b
class="caret"></b></a>
<ul class="dropdown-menu <?js= that.navOptions.navType ==='inline' ? 'inline' : '' ?>">
<?js entry.members.forEach(function(member){ ?>
<li>
<?js= member ?>
</li>
<?js }); ?>
</ul>
</li>
<?js }); ?>
</ul>
</div>
</div>
<div class="row-fluid">
<?js if(docs && docs[0].kind !== "source"){ ?>
<div class="span8">
<?js }else{ ?>
<div class="span12">
<?js } ?>
<div id="main">
<?js= content ?>
</div>
<div class="clearfix"></div>
<footer>
<?js if (that.navOptions.footer.length > 0){ ?>
<?js= that.navOptions.footer ?>
<br />
<?js } ?>
<?js if (that.navOptions.copyright.length > 0){ ?>
<span class="copyright">
<?js= that.navOptions.copyright ?>
</span>
<br />
<?js } ?>
<span class="jsdoc-message">
Documentation generated on <?js= (new Date()) ?>.
</span>
</footer>
</div>
<?js if(docs && docs[0].kind !== "source"){ ?>
<div class="span3">
<div id="toc"></div>
</div>
<?js } ?>
<br clear="both">
</div>
</div>
<script src="scripts/sunlight.js"></script>
<script src="scripts/sunlight.javascript.js"></script>
<script src="scripts/sunlight-plugin.doclinks.js"></script>
<script src="scripts/sunlight-plugin.linenumbers.js"></script>
<script src="scripts/sunlight-plugin.menu.js"></script>
<script src="scripts/jquery.min.js"></script>
<script src="scripts/jquery.scrollTo.js"></script>
<script src="scripts/jquery.localScroll.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script> Sunlight.highlightAll({lineNumbers:<?js= this.navOptions.linenums ?>, showMenu: true, enableDoclinks :true}); </script>
<script>
$( function () {
$( "#toc" ).toc( {
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : 60
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
} );
</script>
<?js if (this.navOptions.collapseSymbols) { ?>
<script>
$( function () {
$('#main').localScroll({
offset: { top: 56 } //offset by the height of your header (give or take a few px, see what works for you)
});
$( "dt h4.name" ).each( function () {
var $this = $( this );
var icon = $( "<i/>" ).addClass( "icon-plus-sign" ).addClass( "pull-right" ).addClass( "icon-white" );
var dt = $this.parents( "dt" );
var children = dt.next( "dd" );
$this.append( icon ).css( {cursor : "pointer"} );
$this.addClass( "member-collapsed" ).addClass( "member" );
children.hide();
$this.toggle( function () {
icon.addClass( "icon-minus-sign" ).removeClass( "icon-plus-sign" ).removeClass( "icon-white" );
$this.addClass( "member-open" ).removeClass( "member-collapsed" );
children.slideDown();
}, function () {
icon.addClass( "icon-plus-sign" ).removeClass( "icon-minus-sign" ).addClass( "icon-white" );
$this.addClass( "member-collapsed" ).removeClass( "member-open" );
children.slideUp();
} );
} );
} );
</script>
<?js } ?>
</body>
</html>

View file

@ -0,0 +1,15 @@
<?js
var data = obj;
var self = this;
?>
<?js if (data.kind === 'package' && (data.name ||data.version)) { ?>
<h3><?js= data.name ?> <?js= data.version ?></h3>
<?js } ?>
<?js if (data.readme) { ?>
<section>
<article><?js= data.readme ?></article>
</section>
<?js } ?>

View file

@ -0,0 +1,34 @@
<?js
var data = obj;
var self = this;
?>
<dt>
<h4 class="name" id="<?js= id ?>"><?js= data.attribs + name + (data.signature ? data.signature : '') ?></h4>
<?js if (data.summary) { ?>
<p class="summary"><?js= summary ?></p>
<?js } ?>
</dt>
<dd>
<?js if (data.description) { ?>
<div class="description">
<?js= data.description ?>
</div>
<?js } ?>
<?js if (data.type && data.type.names) {?>
<h5>Type:</h5>
<ul>
<li>
<?js= self.partial('type.tmpl', data.type.names) ?>
</li>
</ul>
<?js } ?>
<?js= this.partial('details.tmpl', data) ?>
<?js if (data.examples && examples.length) { ?>
<h5>Example<?js= examples.length > 1? 's':'' ?></h5>
<?js= this.partial('examples.tmpl', examples) ?>
<?js } ?>
</dd>

View file

@ -0,0 +1,90 @@
<?js
var data = obj;
var self = this;
?>
<dt>
<h4 class="name" id="<?js= id ?>"><?js= data.attribs + (kind === 'class' ? 'new ' : '') + name + (kind !== 'event' ? data.signature : '') ?></h4>
<?js if (data.summary) { ?>
<p class="summary"><?js= summary ?></p>
<?js } ?>
</dt>
<dd>
<?js if (data.description) { ?>
<div class="description">
<?js= data.description ?>
</div>
<?js } ?>
<?js if (kind === 'event' && data.type && data.type.names) {?>
<h5>Type:</h5>
<ul>
<li>
<?js= self.partial('type.tmpl', data.type.names) ?>
</li>
</ul>
<?js } ?>
<?js if (data['this']) { ?>
<h5>This:</h5>
<ul><li><?js= this.linkto(data['this'], data['this']) ?></li></ul>
<?js } ?>
<?js if (data.params && params.length) { ?>
<h5>Parameters:</h5>
<?js= this.partial('params.tmpl', params) ?>
<?js } ?>
<?js= this.partial('details.tmpl', data) ?>
<?js if (data.fires && fires.length) { ?>
<h5>Fires:</h5>
<ul><?js fires.forEach(function(f) { ?>
<li><?js= self.linkto(f) ?></li>
<?js }); ?></ul>
<?js } ?>
<?js if (data.listens && listens.length) { ?>
<h5>Listens to Events:</h5>
<ul><?js listens.forEach(function(f) { ?>
<li><?js= self.linkto(f) ?></li>
<?js }); ?></ul>
<?js } ?>
<?js if (data.listeners && listeners.length) { ?>
<h5>Listeners of This Event:</h5>
<ul><?js listeners.forEach(function(f) { ?>
<li><?js= self.linkto(f) ?></li>
<?js }); ?></ul>
<?js } ?>
<?js if (data.exceptions && exceptions.length) { ?>
<h5>Throws:</h5>
<?js if (exceptions.length > 1) { ?><ul><?js
exceptions.forEach(function(r) { ?>
<li><?js= self.partial('exceptions.tmpl', r) ?></li>
<?js });
?></ul><?js } else {
exceptions.forEach(function(r) { ?>
<?js= self.partial('exceptions.tmpl', r) ?>
<?js });
} } ?>
<?js if (data.returns && returns.length) { ?>
<h5>Returns:</h5>
<?js if (returns.length > 1) { ?><ul><?js
returns.forEach(function(r) { ?>
<li><?js= self.partial('returns.tmpl', r) ?></li>
<?js });
?></ul><?js } else {
returns.forEach(function(r) { ?>
<?js= self.partial('returns.tmpl', r) ?>
<?js });
} } ?>
<?js if (data.examples && examples.length) { ?>
<h5>Example<?js= examples.length > 1? 's':'' ?></h5>
<?js= this.partial('examples.tmpl', examples) ?>
<?js } ?>
</dd>

View file

@ -0,0 +1,112 @@
<?js
var params = obj;
/* sort subparams under their parent params (like opts.classname) */
var parentParam = null;
params.forEach(function(param, i) {
if (!param) { return; }
if ( parentParam && param.name && param.name.indexOf(parentParam.name + '.') === 0 ) {
param.name = param.name.substr(parentParam.name.length+1);
parentParam.subparams = parentParam.subparams || [];
parentParam.subparams.push(param);
params[i] = null;
}
else {
parentParam = param;
}
});
/* determine if we need extra columns, "attributes" and "default" */
params.hasAttributes = false;
params.hasDefault = false;
params.hasName = false;
params.forEach(function(param) {
if (!param) { return; }
if (param.optional || param.nullable || param.variable) {
params.hasAttributes = true;
}
if (param.name) {
params.hasName = true;
}
if (typeof param.defaultvalue !== 'undefined') {
params.hasDefault = true;
}
});
?>
<table class="params table table-striped">
<thead>
<tr>
<?js if (params.hasName) {?>
<th>Name</th>
<?js } ?>
<th>Type</th>
<?js if (params.hasAttributes) {?>
<th>Argument</th>
<?js } ?>
<?js if (params.hasDefault) {?>
<th>Default</th>
<?js } ?>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<?js
var self = this;
params.forEach(function(param) {
if (!param) { return; }
?>
<tr>
<?js if (params.hasName) {?>
<td class="name"><code><?js= param.name ?></code></td>
<?js } ?>
<td class="type">
<?js if (param.type && param.type.names) {?>
<?js= self.partial('type.tmpl', param.type.names) ?>
<?js } ?>
</td>
<?js if (params.hasAttributes) {?>
<td class="attributes">
<?js if (param.optional) { ?>
&lt;optional><br>
<?js } ?>
<?js if (param.nullable) { ?>
&lt;nullable><br>
<?js } ?>
<?js if (param.variable) { ?>
&lt;repeatable><br>
<?js } ?>
</td>
<?js } ?>
<?js if (params.hasDefault) {?>
<td class="default">
<?js if (typeof param.defaultvalue !== 'undefined') { ?>
<?js= self.htmlsafe(param.defaultvalue) ?>
<?js } ?>
</td>
<?js } ?>
<td class="description last"><?js= param.description ?><?js if (param.subparams) { ?>
<h6>Properties</h6>
<?js= self.partial('params.tmpl', param.subparams) ?>
<?js } ?></td>
</tr>
<?js }); ?>
</tbody>
</table>

View file

@ -0,0 +1,107 @@
<?js
var props = obj;
/* sort subprops under their parent props (like opts.classname) */
var parentProp = null;
props.forEach(function(prop, i) {
if (!prop) { return; }
if ( parentProp && prop.name && prop.name.indexOf(parentProp.name + '.') === 0 ) {
prop.name = prop.name.substr(parentProp.name.length+1);
parentProp.subprops = parentProp.subprops || [];
parentProp.subprops.push(prop);
props[i] = null;
}
else {
parentProp = prop;
}
});
/* determine if we need extra columns, "attributes" and "default" */
props.hasAttributes = false;
props.hasDefault = false;
props.hasName = false;
props.forEach(function(prop) {
if (!prop) { return; }
if (prop.optional || prop.nullable) {
props.hasAttributes = true;
}
if (prop.name) {
props.hasName = true;
}
if (typeof prop.defaultvalue !== 'undefined') {
props.hasDefault = true;
}
});
?>
<table class="props table table-striped">
<thead>
<tr>
<?js if (props.hasName) {?>
<th>Name</th>
<?js } ?>
<th>Type</th>
<?js if (props.hasAttributes) {?>
<th>Argument</th>
<?js } ?>
<?js if (props.hasDefault) {?>
<th>Default</th>
<?js } ?>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<?js
var self = this;
props.forEach(function(prop) {
if (!prop) { return; }
?>
<tr>
<?js if (props.hasName) {?>
<td class="name"><code><?js= prop.name ?></code></td>
<?js } ?>
<td class="type">
<?js if (prop.type && prop.type.names) {?>
<?js= self.partial('type.tmpl', prop.type.names) ?>
<?js } ?>
</td>
<?js if (props.hasAttributes) {?>
<td class="attributes">
<?js if (prop.optional) { ?>
&lt;optional><br>
<?js } ?>
<?js if (prop.nullable) { ?>
&lt;nullable><br>
<?js } ?>
</td>
<?js } ?>
<?js if (props.hasDefault) {?>
<td class="default">
<?js if (typeof prop.defaultvalue !== 'undefined') { ?>
<?js= self.htmlsafe(prop.defaultvalue) ?>
<?js } ?>
</td>
<?js } ?>
<td class="description last"><?js= prop.description ?><?js if (prop.subprops) { ?>
<h6>Properties</h6><?js= self.partial('properties.tmpl', prop.subprops) ?>
<?js } ?></td>
</tr>
<?js }); ?>
</tbody>
</table>

View file

@ -0,0 +1,19 @@
<?js
var data = obj;
if (data.description) {
?>
<div class="param-desc">
<?js= description ?>
</div>
<?js } ?>
<?js if (data.type && data.type.names) {?>
<dl>
<dt>
Type
</dt>
<dd>
<?js= this.partial('type.tmpl', data.type.names) ?>
</dd>
</dl>
<?js } ?>

View file

@ -0,0 +1,5 @@
<div class="hero-unit">
<ul class="nav nav-pills nav-stacked">
</ul>
</div>

View file

@ -0,0 +1,8 @@
<?js
var data = obj;
?>
<section>
<article>
<pre class="sunlight-highlight-javascript <?js= this.navOptions.linenums ? 'linenums' : '' ?>"><?js= data.code ?></pre>
</article>
</section>

View file

@ -0,0 +1,19 @@
<section>
<header>
<?js if (children.length > 0) { ?>
<ul><?js
var self = this;
children.forEach(function(t) { ?>
<li><?js= self.tutoriallink(t.name) ?></li>
<?js }); ?></ul>
<?js } ?>
<h2><?js= header ?></h2>
</header>
<article>
<?js= content ?>
</article>
</section>

View file

@ -0,0 +1,7 @@
<?js
var data = obj;
var self = this;
data.forEach(function(name, i) { ?>
<span class="param-type"><?js= self.linkto(name, self.htmlsafe(name)) ?></span>
<?js if (i < data.length-1) { ?>|<?js } ?>
<?js }); ?>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,63 +1,331 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Index</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Index</h1>
<h3> </h3>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Classes</h3><ul><li><a href="Tone.html">Tone</a></li><li><a href="Tone.Add.html">Add</a></li><li><a href="Tone.AutoPanner.html">AutoPanner</a></li><li><a href="Tone.BitCrusher.html">BitCrusher</a></li><li><a href="Tone.DryWet.html">DryWet</a></li><li><a href="Tone.Envelope.html">Envelope</a></li><li><a href="Tone.LFO.html">LFO</a></li><li><a href="Tone.Merge.html">Merge</a></li><li><a href="Tone.Meter.html">Meter</a></li><li><a href="Tone.Microphone.html">Microphone</a></li><li><a href="Tone.Multiply.html">Multiply</a></li><li><a href="Tone.Noise.html">Noise</a></li><li><a href="Tone.Oscillator.html">Oscillator</a></li><li><a href="Tone.Panner.html">Panner</a></li><li><a href="Tone.Player.html">Player</a></li><li><a href="Tone.Recorder.html">Recorder</a></li><li><a href="Tone.Scale.html">Scale</a></li><li><a href="Tone.Signal.html">Signal</a></li><li><a href="Tone.Source.html">Source</a></li><li><a href="Tone.Split.html">Split</a></li><li><a href="Tone.Transport.html">Transport</a></li></ul><h3>Global</h3><ul><li><a href="global.html#for the default output">for the default output</a></li><li>{GainNode}</li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Fri Jun 20 2014 11:03:19 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Tone.js Index</title>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<link type="text/css" rel="stylesheet" href="styles/site.flatly.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">Tone.js</a>
<ul class="nav">
<li class="dropdown">
<a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b
class="caret"></b></a>
<ul class="dropdown-menu inline">
<li>
<a href="Tone.html">Tone</a>
</li>
<li>
<a href="Tone.Add.html">Add</a>
</li>
<li>
<a href="Tone.AutoPanner.html">AutoPanner</a>
</li>
<li>
<a href="Tone.BitCrusher.html">BitCrusher</a>
</li>
<li>
<a href="Tone.DryWet.html">DryWet</a>
</li>
<li>
<a href="Tone.Effect.html">Effect</a>
</li>
<li>
<a href="Tone.Envelope.html">Envelope</a>
</li>
<li>
<a href="Tone.FeedbackDelay.html">FeedbackDelay</a>
</li>
<li>
<a href="Tone.FeedbackEffect.html">FeedbackEffect</a>
</li>
<li>
<a href="Tone.LFO.html">LFO</a>
</li>
<li>
<a href="Tone.Merge.html">Merge</a>
</li>
<li>
<a href="Tone.Meter.html">Meter</a>
</li>
<li>
<a href="Tone.Microphone.html">Microphone</a>
</li>
<li>
<a href="Tone.Multiply.html">Multiply</a>
</li>
<li>
<a href="Tone.Noise.html">Noise</a>
</li>
<li>
<a href="Tone.Oscillator.html">Oscillator</a>
</li>
<li>
<a href="Tone.Panner.html">Panner</a>
</li>
<li>
<a href="Tone.PingPongDelay.html">PingPongDelay</a>
</li>
<li>
<a href="Tone.Player.html">Player</a>
</li>
<li>
<a href="Tone.Recorder.html">Recorder</a>
</li>
<li>
<a href="Tone.Scale.html">Scale</a>
</li>
<li>
<a href="Tone.Signal.html">Signal</a>
</li>
<li>
<a href="Tone.Source.html">Source</a>
</li>
<li>
<a href="Tone.Split.html">Split</a>
</li>
<li>
<a href="Tone.Transport.html">Transport</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<span class="page-title">Index</span>
<section>
<article><h1>Tone.js</h1>
<p>A collection of building blocks extending and wrapping the Web Audio API. </p>
<h1>Installation</h1>
<p>Tone.js can be used with or without require.js</p>
<h3>require.js</h3>
<p>There are a couple ways to use the tone library with require.js and r.js. </p>
<p>You can include the Tone.js build (located in the build folder), as one of the deps in your require.config</p>
<pre><code class="lang-javascript">require.config({
baseUrl: './base',
deps : [&quot;../deps/Tone.js/build/Tone&quot;],
});</code></pre>
<p>or alternatively, keep the directory structure the same and make a path which points to the Tone directory</p>
<pre><code class="lang-javascript">require.config({
baseUrl: './base',
paths: {
&quot;Tone&quot; : &quot;../deps/Tone.js/Tone&quot;
}
});</code></pre>
<h3>without require.js</h3>
<p>To use Tone.js without require, just add the build source (located at build/Tone.js) to the top of your html page. Tone will add itself as a global. </p>
<pre><code class="lang-html">&lt;script type=&quot;text/javascript&quot; src=&quot;../build/Tone.js&quot;&gt;&lt;/script&gt;</code></pre>
<h1>API</h1>
<h2>Tone()</h2>
<p>Tone is the base-class of all ToneNode's</p>
<h3>Properties</h3>
<h4>.input {GainNode}</h4>
<p>Connect all inputs to a ToneNode to the Node's input.</p>
<h4>.output {GainNode}</h4>
<p>A GainNode which is the output of all of the processing that occurs within the ToneNode</p>
<h4>.context {AudioContext}</h4>
<p>A reference to the AudioContext. It is also available globally as Tone.context</p>
<h3>Methods</h3>
<h4>.connect(node)</h4>
<ul>
<li>node - {AudioNode | AudioParam | ToneNode}</li>
</ul>
<p>Connects the node's output to the next node. If it is a ToneNode it will automatically connect to that Node's .input </p>
<h4>.now() {number}</h4>
<ul>
<li>returns context.currentTime</li>
</ul>
<h2>Master</h2>
<p>Tone.Master is a single master output which connects to context.destination (the speakers). Before going to the DestinationNode, audio is run through a limiter (a DynamicsCompressorNode with threshold of 0db and a high ratio) to reduce the chances of blowing any ear drums. </p>
<h4>.toMaster()</h4>
<p>.toMaster() can be called on any AudioNode or ToneNode and will send the output audio to the Master channel. </p>
<h2>Transport</h2>
<p>The Transport allows events to be triggered along a musical timeline. The clock-source is bound to an Oscillator which allows for smooth tempo-curving and sample-accurate timing. </p>
<h3>Properties</h3>
<h4>.state {string}</h4>
<p>The current state of the transport ('stopped' | 'started' | 'paused')</p>
<h4>.loop {boolean}</h4>
<p>Set the transport to loop over a section</p>
<h3>Methods</h3>
<h4>.setBpm(bpm)</h4>
<ul>
<li>bpm - {number} the new tempo in beats per minute</li>
</ul>
<h4>.getBpm()</h4>
<ul>
<li>returns - {number} the current bpm</li>
</ul>
<h4>.setInterval(callback, interval, context) {Timeout}</h4>
<ul>
<li>callback - in the form: function(number)</li>
<li>interval - {number | Notation | TransportTime} see <a href="#timing-and-musical-notation">Timing and Musical Notation</a> for more information about timing in Tone.js</li>
<li>context - {Object=} optional context in which the callback is invoked</li>
<li>returns - a timeout which can be used to clear the interval</li>
</ul>
<p>.setInterval is used for repeat events. The callback is invoked before the event will occur and is passed the exact event time as a parameter</p>
<pre><code class="lang-javascript">Tone.Transport.setInterval(function(time){
samplePlayer.start(time);
}, &quot;4n&quot;);</code></pre>
<h4>.setTimeout(callback, timeoutTime, context) {Timeout}</h4>
<ul>
<li>callback - in the form: function(number)</li>
<li>timeoutTime - {number | Notation | TransportTime} see <a href="#timing-and-musical-notation">Timing and Musical Notation</a> for more information about timing in Tone.js</li>
<li>context - {Object=} optional context in which the callback is invoked</li>
<li>returns - a timeout which can be used to clear the timeout</li>
</ul>
<p>.setTimeout is similar to .setInterval but for single occurance events. </p>
<pre><code class="lang-javascript">Tone.Transport.setTimeout(function(time){
samplePlayer.start(time);
}, &quot;1:0:2&quot;);</code></pre>
<h1>Timing and Musical Notation</h1>
<p>All ToneNodes that accept a time as an argument can parse that time in a few ways. </p>
<h4>'now' relative timing</h4>
<p>A timing value preceeded by a &quot;+&quot; will be now-relative meaning that the time will be added to the context's currentTime. </p>
<pre><code class="lang-javascript">oscillator.start(&quot;+1&quot;) //starts exactly 1 second from now</code></pre>
<h4>Notation</h4>
<p>Timing can also be described in musical notation. A quarter-note is notated as &quot;4n&quot; and a sixteenth-note triplet is notated as &quot;16t&quot;. Three measures is &quot;3m&quot;. The tempo and time signature is set by Tone.Transport. This can be combined with now-relative timing. </p>
<pre><code class="lang-javascript">lfo.setFrequency(&quot;4n&quot;) //oscillates at the rate of a quarter note</code></pre>
<h4>Transport Time</h4>
<p>Transport Time is described measures:quater-notes:sixteenth-notes. </p>
<pre><code class="lang-javascript">//Start the chorus 32 measures after the start of the Transport
Tone.Transport.setTimeline(startChorus, &quot;32:0:0&quot;);</code></pre></article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
Tone No Tone Copyright © 2014.
</span>
<br />
<span class="jsdoc-message">
Documentation generated on Sat Jun 21 2014 22:54:27 GMT-0400 (EDT).
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<script src="scripts/sunlight.js"></script>
<script src="scripts/sunlight.javascript.js"></script>
<script src="scripts/sunlight-plugin.doclinks.js"></script>
<script src="scripts/sunlight-plugin.linenumbers.js"></script>
<script src="scripts/sunlight-plugin.menu.js"></script>
<script src="scripts/jquery.min.js"></script>
<script src="scripts/jquery.scrollTo.js"></script>
<script src="scripts/jquery.localScroll.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script> Sunlight.highlightAll({lineNumbers:true, showMenu: true, enableDoclinks :true}); </script>
<script>
$( function () {
$( "#toc" ).toc( {
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : 60
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
} );
</script>
</body>
</html>