|
Akka/Scala example source code file (toc.js)
The toc.js Akka example source code
/*!
* samaxesJS JavaScript Library
* jQuery TOC Plugin v1.1.3
* http://code.google.com/p/samaxesjs/
*
* Copyright (c) 2011 samaxes.com
*
* 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($) {
/*
* The TOC plugin dynamically builds a table of contents from the headings in
* a document and prepends legal-style section numbers to each of the headings.
*/
$.fn.toc = function(options) {
var opts = $.extend({}, $.fn.toc.defaults, options);
var toc = this.append('<ul></ul>').children('ul');
var headers = {h1: 0, h2: 0, h3: 0, h4: 0, h5: 0, h6: 0};
var index = 0;
var indexes = {h1: 0, h2: 0, h3: 0, h4: 0, h5: 0, h6: 0};
for (var i = 1; i <= 6; i++) {
indexes['h' + i] = (opts.exclude.match(new RegExp('h' + i, 'i')) === null && $('h' + i).length > 0) ? ++index : 0;
}
return this.each(function() {
$(opts.context + ' :header').not(opts.exclude).each(function() {
var $this = $(this);
for (var i = 6; i >= 1; i--) {
if ($this.is('h' + i)) {
if (opts.numerate) {
checkContainer(headers['h' + i], toc);
updateNumeration(headers, 'h' + i);
if (opts.autoId && !$this.attr('id')) {
$this.attr('id', generateId($this.text()));
}
$this.text(addNumeration(headers, 'h' + i, $this.text()));
}
if (opts.autoId && !$this.attr('id')) {
$this.attr('id', generateId($this.text()));
}
appendToTOC(toc, indexes['h' + i], $this.attr('id'), $this.text());
}
}
});
});
};
/*
* Checks if the last node is an 'ul' element.
* If not, a new one is created.
*/
function checkContainer(header, toc) {
if (header === 0 && toc.find(':last').length !== 0 && !toc.find(':last').is('ul')) {
toc.find('li:last').append('<ul></ul>');
}
};
/*
* Updates headers numeration.
*/
function updateNumeration(headers, header) {
$.each(headers, function(i, val) {
if (i === header) {
++headers[i];
} else if (i > header) {
headers[i] = 0;
}
});
};
/*
* Generate an anchor id from a string by replacing unwanted characters.
*/
function generateId(text) {
return text.replace(/[ <#\/\\?&.,():;]/g, '_');
};
/*
* Prepends the numeration to a heading.
*/
function addNumeration(headers, header, text) {
var numeration = '';
$.each(headers, function(i, val) {
if (i <= header && headers[i] > 0) {
numeration += headers[i] + '.';
}
});
return numeration + ' ' + text;
};
/*
* Appends a new node to the TOC.
*/
function appendToTOC(toc, index, id, text) {
var parent = toc;
for (var i = 1; i < index; i++) {
if (parent.find('> li:last > ul').length === 0) {
parent.append('<li style="list-style: none;"><ul></ul></li>');
}
parent = parent.find('> li:last > ul:first');
}
if (id === '') {
parent.append('<li>' + text + '</li>');
} else {
parent.append('<li><a href="#' + id + '" class="scroll">' + text + '</a></li>');
}
};
$.fn.toc.defaults = {
exclude: 'h1, h5, h6',
context: '',
autoId: true,
numerate: false
};
})(jQuery);
Other Akka source code examplesHere is a short list of links related to this Akka toc.js source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.