Index: third_party/simplejson/docs/_static/doctools.js |
diff --git a/third_party/simplejson/docs/_static/doctools.js b/third_party/simplejson/docs/_static/doctools.js |
new file mode 100755 |
index 0000000000000000000000000000000000000000..b9155846875293c057421434af9cd9d3c9f61ca7 |
--- /dev/null |
+++ b/third_party/simplejson/docs/_static/doctools.js |
@@ -0,0 +1,352 @@ |
+/// XXX: make it cross browser |
+ |
+/** |
+ * make the code below compatible with browsers without |
+ * an installed firebug like debugger |
+ */ |
+if (!window.console || !console.firebug) { |
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", |
+ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; |
+ window.console = {}; |
+ for (var i = 0; i < names.length; ++i) |
+ window.console[names[i]] = function() {} |
+} |
+ |
+/** |
+ * small helper function to urldecode strings |
+ */ |
+jQuery.urldecode = function(x) { |
+ return decodeURIComponent(x).replace(/\+/g, ' '); |
+} |
+ |
+/** |
+ * small helper function to urlencode strings |
+ */ |
+jQuery.urlencode = encodeURIComponent; |
+ |
+/** |
+ * This function returns the parsed url parameters of the |
+ * current request. Multiple values per key are supported, |
+ * it will always return arrays of strings for the value parts. |
+ */ |
+jQuery.getQueryParameters = function(s) { |
+ if (typeof s == 'undefined') |
+ s = document.location.search; |
+ var parts = s.substr(s.indexOf('?') + 1).split('&'); |
+ var result = {}; |
+ for (var i = 0; i < parts.length; i++) { |
+ var tmp = parts[i].split('=', 2); |
+ var key = jQuery.urldecode(tmp[0]); |
+ var value = jQuery.urldecode(tmp[1]); |
+ if (key in result) |
+ result[key].push(value); |
+ else |
+ result[key] = [value]; |
+ } |
+ return result; |
+} |
+ |
+/** |
+ * small function to check if an array contains |
+ * a given item. |
+ */ |
+jQuery.contains = function(arr, item) { |
+ for (var i = 0; i < arr.length; i++) { |
+ if (arr[i] == item) |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+/** |
+ * highlight a given string on a jquery object by wrapping it in |
+ * span elements with the given class name. |
+ */ |
+jQuery.fn.highlightText = function(text, className) { |
+ function highlight(node) { |
+ if (node.nodeType == 3) { |
+ var val = node.nodeValue; |
+ var pos = val.toLowerCase().indexOf(text); |
+ if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) { |
+ var span = document.createElement("span"); |
+ span.className = className; |
+ span.appendChild(document.createTextNode(val.substr(pos, text.length))); |
+ node.parentNode.insertBefore(span, node.parentNode.insertBefore( |
+ document.createTextNode(val.substr(pos + text.length)), |
+ node.nextSibling)); |
+ node.nodeValue = val.substr(0, pos); |
+ } |
+ } |
+ else if (!jQuery(node).is("button, select, textarea")) { |
+ jQuery.each(node.childNodes, function() { |
+ highlight(this) |
+ }); |
+ } |
+ } |
+ return this.each(function() { |
+ highlight(this); |
+ }); |
+} |
+ |
+/** |
+ * Small JavaScript module for the documentation. |
+ */ |
+var Documentation = { |
+ |
+ init : function() { |
+ /* this.addContextElements(); -- now done statically */ |
+ this.fixFirefoxAnchorBug(); |
+ this.highlightSearchWords(); |
+ this.initModIndex(); |
+ this.initComments(); |
+ }, |
+ |
+ /** |
+ * add context elements like header anchor links |
+ */ |
+ addContextElements : function() { |
+ for (var i = 1; i <= 6; i++) { |
+ $('h' + i + '[@id]').each(function() { |
+ $('<a class="headerlink">\u00B6</a>'). |
+ attr('href', '#' + this.id). |
+ attr('title', 'Permalink to this headline'). |
+ appendTo(this); |
+ }); |
+ } |
+ $('dt[@id]').each(function() { |
+ $('<a class="headerlink">\u00B6</a>'). |
+ attr('href', '#' + this.id). |
+ attr('title', 'Permalink to this definition'). |
+ appendTo(this); |
+ }); |
+ }, |
+ |
+ /** |
+ * workaround a firefox stupidity |
+ */ |
+ fixFirefoxAnchorBug : function() { |
+ if (document.location.hash && $.browser.mozilla) |
+ window.setTimeout(function() { |
+ document.location.href += ''; |
+ }, 10); |
+ }, |
+ |
+ /** |
+ * highlight the search words provided in the url in the text |
+ */ |
+ highlightSearchWords : function() { |
+ var params = $.getQueryParameters(); |
+ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; |
+ if (terms.length) { |
+ var body = $('div.body'); |
+ window.setTimeout(function() { |
+ $.each(terms, function() { |
+ body.highlightText(this.toLowerCase(), 'highlight'); |
+ }); |
+ }, 10); |
+ $('<li class="highlight-link"><a href="javascript:Documentation.' + |
+ 'hideSearchWords()">Hide Search Matches</a></li>') |
+ .appendTo($('.sidebar .this-page-menu')); |
+ } |
+ }, |
+ |
+ /** |
+ * init the modindex toggle buttons |
+ */ |
+ initModIndex : function() { |
+ var togglers = $('img.toggler').click(function() { |
+ var src = $(this).attr('src'); |
+ var idnum = $(this).attr('id').substr(7); |
+ console.log($('tr.cg-' + idnum).toggle()); |
+ if (src.substr(-9) == 'minus.png') |
+ $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); |
+ else |
+ $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); |
+ }).css('display', ''); |
+ if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) { |
+ togglers.click(); |
+ } |
+ }, |
+ |
+ /** |
+ * init the inline comments |
+ */ |
+ initComments : function() { |
+ $('.inlinecomments div.actions').each(function() { |
+ this.innerHTML += ' | '; |
+ $(this).append($('<a href="#">hide comments</a>').click(function() { |
+ $(this).parent().parent().toggle(); |
+ return false; |
+ })); |
+ }); |
+ $('.inlinecomments .comments').hide(); |
+ $('.inlinecomments a.bubble').each(function() { |
+ $(this).click($(this).is('.emptybubble') ? function() { |
+ var params = $.getQueryParameters(this.href); |
+ Documentation.newComment(params.target[0]); |
+ return false; |
+ } : function() { |
+ $('.comments', $(this).parent().parent()[0]).toggle(); |
+ return false; |
+ }); |
+ }); |
+ $('#comments div.actions a.newcomment').click(function() { |
+ Documentation.newComment(); |
+ return false; |
+ }); |
+ if (document.location.hash.match(/^#comment-/)) |
+ $('.inlinecomments .comments ' + document.location.hash) |
+ .parent().toggle(); |
+ }, |
+ |
+ /** |
+ * helper function to hide the search marks again |
+ */ |
+ hideSearchWords : function() { |
+ $('.sidebar .this-page-menu li.highlight-link').fadeOut(300); |
+ $('span.highlight').removeClass('highlight'); |
+ }, |
+ |
+ /** |
+ * show the comment window for a certain id or the whole page. |
+ */ |
+ newComment : function(id) { |
+ Documentation.CommentWindow.openFor(id || ''); |
+ }, |
+ |
+ /** |
+ * write a new comment from within a comment view box |
+ */ |
+ newCommentFromBox : function(link) { |
+ var params = $.getQueryParameters(link.href); |
+ $(link).parent().parent().fadeOut('slow'); |
+ this.newComment(params.target); |
+ }, |
+ |
+ /** |
+ * make the url absolute |
+ */ |
+ makeURL : function(relativeURL) { |
+ return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; |
+ }, |
+ |
+ /** |
+ * get the current relative url |
+ */ |
+ getCurrentURL : function() { |
+ var path = document.location.pathname; |
+ var parts = path.split(/\//); |
+ $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { |
+ if (this == '..') |
+ parts.pop(); |
+ }); |
+ var url = parts.join('/'); |
+ return path.substring(url.lastIndexOf('/') + 1, path.length - 1); |
+ }, |
+ |
+ /** |
+ * class that represents the comment window |
+ */ |
+ CommentWindow : (function() { |
+ var openWindows = {}; |
+ |
+ var Window = function(sectionID) { |
+ this.url = Documentation.makeURL('@comments/' + Documentation.getCurrentURL() |
+ + '/?target=' + $.urlencode(sectionID) + '&mode=ajax'); |
+ this.sectionID = sectionID; |
+ |
+ this.root = $('<div class="commentwindow"></div>'); |
+ this.root.appendTo($('body')); |
+ this.title = $('<h3>New Comment</h3>').appendTo(this.root); |
+ this.body = $('<div class="form">please wait...</div>').appendTo(this.root); |
+ this.resizeHandle = $('<div class="resizehandle"></div>').appendTo(this.root); |
+ |
+ this.root.Draggable({ |
+ handle: this.title[0] |
+ }); |
+ |
+ this.root.css({ |
+ left: window.innerWidth / 2 - $(this.root).width() / 2, |
+ top: window.scrollY + (window.innerHeight / 2 - 150) |
+ }); |
+ this.root.fadeIn('slow'); |
+ this.updateView(); |
+ }; |
+ |
+ Window.prototype.updateView = function(data) { |
+ var self = this; |
+ function update(data) { |
+ if (data.posted) { |
+ document.location.hash = '#comment-' + data.commentID; |
+ document.location.reload(); |
+ } |
+ else { |
+ self.body.html(data.body); |
+ $('div.actions', self.body).append($('<input>') |
+ .attr('type', 'button') |
+ .attr('value', 'Close') |
+ .click(function() { self.close(); }) |
+ ); |
+ $('div.actions input[@name="preview"]') |
+ .attr('type', 'button') |
+ .click(function() { self.submitForm($('form', self.body)[0], true); }); |
+ $('form', self.body).bind("submit", function() { |
+ self.submitForm(this); |
+ return false; |
+ }); |
+ |
+ if (data.error) { |
+ self.root.Highlight(1000, '#aadee1'); |
+ $('div.error', self.root).slideDown(500); |
+ } |
+ } |
+ } |
+ |
+ if (typeof data == 'undefined') |
+ $.getJSON(this.url, function(json) { update(json); }); |
+ else |
+ $.ajax({ |
+ url: this.url, |
+ type: 'POST', |
+ dataType: 'json', |
+ data: data, |
+ success: function(json) { update(json); } |
+ }); |
+ } |
+ |
+ Window.prototype.getFormValue = function(name) { |
+ return $('*[@name="' + name + '"]', this.body)[0].value; |
+ } |
+ |
+ Window.prototype.submitForm = function(form, previewMode) { |
+ this.updateView({ |
+ author: form.author.value, |
+ author_mail: form.author_mail.value, |
+ title: form.title.value, |
+ comment_body: form.comment_body.value, |
+ preview: previewMode ? 'yes' : '' |
+ }); |
+ } |
+ |
+ Window.prototype.close = function() { |
+ var self = this; |
+ delete openWindows[this.sectionID]; |
+ this.root.fadeOut('slow', function() { |
+ self.root.remove(); |
+ }); |
+ } |
+ |
+ Window.openFor = function(sectionID) { |
+ if (sectionID in openWindows) |
+ return openWindows[sectionID]; |
+ return new Window(sectionID); |
+ } |
+ |
+ return Window; |
+ })() |
+}; |
+ |
+ |
+$(document).ready(function() { |
+ Documentation.init(); |
+}); |