Mercurial > repos > yufei-luo > s_mart
diff commons/pyRepetUnit/doc/epydoc.js @ 31:0ab839023fe4
Uploaded
author | m-zytnicki |
---|---|
date | Tue, 30 Apr 2013 14:33:21 -0400 |
parents | 94ab73e8a190 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commons/pyRepetUnit/doc/epydoc.js Tue Apr 30 14:33:21 2013 -0400 @@ -0,0 +1,293 @@ +function toggle_private() { + // Search for any private/public links on this page. Store + // their old text in "cmd," so we will know what action to + // take; and change their text to the opposite action. + var cmd = "?"; + var elts = document.getElementsByTagName("a"); + for(var i=0; i<elts.length; i++) { + if (elts[i].className == "privatelink") { + cmd = elts[i].innerHTML; + elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")? + "hide private":"show private"); + } + } + // Update all DIVs containing private objects. + var elts = document.getElementsByTagName("div"); + for(var i=0; i<elts.length; i++) { + if (elts[i].className == "private") { + elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); + } + else if (elts[i].className == "public") { + elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none"); + } + } + // Update all table rows containing private objects. Note, we + // use "" instead of "block" becaue IE & firefox disagree on what + // this should be (block vs table-row), and "" just gives the + // default for both browsers. + var elts = document.getElementsByTagName("tr"); + for(var i=0; i<elts.length; i++) { + if (elts[i].className == "private") { + elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":""); + } + } + // Update all list items containing private objects. + var elts = document.getElementsByTagName("li"); + for(var i=0; i<elts.length; i++) { + if (elts[i].className == "private") { + elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")? + "none":""); + } + } + // Update all list items containing private objects. + var elts = document.getElementsByTagName("ul"); + for(var i=0; i<elts.length; i++) { + if (elts[i].className == "private") { + elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); + } + } + // Set a cookie to remember the current option. + document.cookie = "EpydocPrivate="+cmd; + } +function show_private() { + var elts = document.getElementsByTagName("a"); + for(var i=0; i<elts.length; i++) { + if (elts[i].className == "privatelink") { + cmd = elts[i].innerHTML; + if (cmd && cmd.substr(0,4)=="show") + toggle_private(); + } + } + } +function getCookie(name) { + var dc = document.cookie; + var prefix = name + "="; + var begin = dc.indexOf("; " + prefix); + if (begin == -1) { + begin = dc.indexOf(prefix); + if (begin != 0) return null; + } else + { begin += 2; } + var end = document.cookie.indexOf(";", begin); + if (end == -1) + { end = dc.length; } + return unescape(dc.substring(begin + prefix.length, end)); + } +function setFrame(url1, url2) { + parent.frames[1].location.href = url1; + parent.frames[2].location.href = url2; + } +function checkCookie() { + var cmd=getCookie("EpydocPrivate"); + if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0) + toggle_private(); + } +function toggleCallGraph(id) { + var elt = document.getElementById(id); + if (elt.style.display == "none") + elt.style.display = "block"; + else + elt.style.display = "none"; + } +function expand(id) { + var elt = document.getElementById(id+"-expanded"); + if (elt) elt.style.display = "block"; + var elt = document.getElementById(id+"-expanded-linenums"); + if (elt) elt.style.display = "block"; + var elt = document.getElementById(id+"-collapsed"); + if (elt) { elt.innerHTML = ""; elt.style.display = "none"; } + var elt = document.getElementById(id+"-collapsed-linenums"); + if (elt) { elt.innerHTML = ""; elt.style.display = "none"; } + var elt = document.getElementById(id+"-toggle"); + if (elt) { elt.innerHTML = "-"; } +} + +function collapse(id) { + var elt = document.getElementById(id+"-expanded"); + if (elt) elt.style.display = "none"; + var elt = document.getElementById(id+"-expanded-linenums"); + if (elt) elt.style.display = "none"; + var elt = document.getElementById(id+"-collapsed-linenums"); + if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; } + var elt = document.getElementById(id+"-toggle"); + if (elt) { elt.innerHTML = "+"; } + var elt = document.getElementById(id+"-collapsed"); + if (elt) { + elt.style.display = "block"; + + var indent = elt.getAttribute("indent"); + var pad = elt.getAttribute("pad"); + var s = "<tt class='py-lineno'>"; + for (var i=0; i<pad.length; i++) { s += " " } + s += "</tt>"; + s += " <tt class='py-line'>"; + for (var i=0; i<indent.length; i++) { s += " " } + s += "<a href='#' onclick='expand(\"" + id; + s += "\");return false'>...</a></tt><br />"; + elt.innerHTML = s; + } +} + +function toggle(id) { + elt = document.getElementById(id+"-toggle"); + if (elt.innerHTML == "-") + collapse(id); + else + expand(id); + return false; +} + +function highlight(id) { + var elt = document.getElementById(id+"-def"); + if (elt) elt.className = "py-highlight-hdr"; + var elt = document.getElementById(id+"-expanded"); + if (elt) elt.className = "py-highlight"; + var elt = document.getElementById(id+"-collapsed"); + if (elt) elt.className = "py-highlight"; +} + +function num_lines(s) { + var n = 1; + var pos = s.indexOf("\n"); + while ( pos > 0) { + n += 1; + pos = s.indexOf("\n", pos+1); + } + return n; +} + +// Collapse all blocks that mave more than `min_lines` lines. +function collapse_all(min_lines) { + var elts = document.getElementsByTagName("div"); + for (var i=0; i<elts.length; i++) { + var elt = elts[i]; + var split = elt.id.indexOf("-"); + if (split > 0) + if (elt.id.substring(split, elt.id.length) == "-expanded") + if (num_lines(elt.innerHTML) > min_lines) + collapse(elt.id.substring(0, split)); + } +} + +function expandto(href) { + var start = href.indexOf("#")+1; + if (start != 0 && start != href.length) { + if (href.substring(start, href.length) != "-") { + collapse_all(4); + pos = href.indexOf(".", start); + while (pos != -1) { + var id = href.substring(start, pos); + expand(id); + pos = href.indexOf(".", pos+1); + } + var id = href.substring(start, href.length); + expand(id); + highlight(id); + } + } +} + +function kill_doclink(id) { + var parent = document.getElementById(id); + parent.removeChild(parent.childNodes.item(0)); +} +function auto_kill_doclink(ev) { + if (!ev) var ev = window.event; + if (!this.contains(ev.toElement)) { + var parent = document.getElementById(this.parentID); + parent.removeChild(parent.childNodes.item(0)); + } +} + +function doclink(id, name, targets_id) { + var elt = document.getElementById(id); + + // If we already opened the box, then destroy it. + // (This case should never occur, but leave it in just in case.) + if (elt.childNodes.length > 1) { + elt.removeChild(elt.childNodes.item(0)); + } + else { + // The outer box: relative + inline positioning. + var box1 = document.createElement("div"); + box1.style.position = "relative"; + box1.style.display = "inline"; + box1.style.top = 0; + box1.style.left = 0; + + // A shadow for fun + var shadow = document.createElement("div"); + shadow.style.position = "absolute"; + shadow.style.left = "-1.3em"; + shadow.style.top = "-1.3em"; + shadow.style.background = "#404040"; + + // The inner box: absolute positioning. + var box2 = document.createElement("div"); + box2.style.position = "relative"; + box2.style.border = "1px solid #a0a0a0"; + box2.style.left = "-.2em"; + box2.style.top = "-.2em"; + box2.style.background = "white"; + box2.style.padding = ".3em .4em .3em .4em"; + box2.style.fontStyle = "normal"; + box2.onmouseout=auto_kill_doclink; + box2.parentID = id; + + // Get the targets + var targets_elt = document.getElementById(targets_id); + var targets = targets_elt.getAttribute("targets"); + var links = ""; + target_list = targets.split(","); + for (var i=0; i<target_list.length; i++) { + var target = target_list[i].split("="); + links += "<li><a href='" + target[1] + + "' style='text-decoration:none'>" + + target[0] + "</a></li>"; + } + + // Put it all together. + elt.insertBefore(box1, elt.childNodes.item(0)); + //box1.appendChild(box2); + box1.appendChild(shadow); + shadow.appendChild(box2); + box2.innerHTML = + "Which <b>"+name+"</b> do you want to see documentation for?" + + "<ul style='margin-bottom: 0;'>" + + links + + "<li><a href='#' style='text-decoration:none' " + + "onclick='kill_doclink(\""+id+"\");return false;'>"+ + "<i>None of the above</i></a></li></ul>"; + } + return false; +} + +function get_anchor() { + var href = location.href; + var start = href.indexOf("#")+1; + if ((start != 0) && (start != href.length)) + return href.substring(start, href.length); + } +function redirect_url(dottedName) { + // Scan through each element of the "pages" list, and check + // if "name" matches with any of them. + for (var i=0; i<pages.length; i++) { + + // Each page has the form "<pagename>-m" or "<pagename>-c"; + // extract the <pagename> portion & compare it to dottedName. + var pagename = pages[i].substring(0, pages[i].length-2); + if (pagename == dottedName.substring(0,pagename.length)) { + + // We've found a page that matches `dottedName`; + // construct its URL, using leftover `dottedName` + // content to form an anchor. + var pagetype = pages[i].charAt(pages[i].length-1); + var url = pagename + ((pagetype=="m")?"-module.html": + "-class.html"); + if (dottedName.length > pagename.length) + url += "#" + dottedName.substring(pagename.length+1, + dottedName.length); + return url; + } + } + }