/apidocs/epydoc.js

http://echo-nest-remix.googlecode.com/ · JavaScript · 293 lines · 249 code · 17 blank · 27 comment · 84 complexity · 98b84160a551d0307d142dff4ac77084 MD5 · raw file

  1. function toggle_private() {
  2. // Search for any private/public links on this page. Store
  3. // their old text in "cmd," so we will know what action to
  4. // take; and change their text to the opposite action.
  5. var cmd = "?";
  6. var elts = document.getElementsByTagName("a");
  7. for(var i=0; i<elts.length; i++) {
  8. if (elts[i].className == "privatelink") {
  9. cmd = elts[i].innerHTML;
  10. elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
  11. "hide&nbsp;private":"show&nbsp;private");
  12. }
  13. }
  14. // Update all DIVs containing private objects.
  15. var elts = document.getElementsByTagName("div");
  16. for(var i=0; i<elts.length; i++) {
  17. if (elts[i].className == "private") {
  18. elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
  19. }
  20. else if (elts[i].className == "public") {
  21. elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
  22. }
  23. }
  24. // Update all table rows containing private objects. Note, we
  25. // use "" instead of "block" becaue IE & firefox disagree on what
  26. // this should be (block vs table-row), and "" just gives the
  27. // default for both browsers.
  28. var elts = document.getElementsByTagName("tr");
  29. for(var i=0; i<elts.length; i++) {
  30. if (elts[i].className == "private") {
  31. elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
  32. }
  33. }
  34. // Update all list items containing private objects.
  35. var elts = document.getElementsByTagName("li");
  36. for(var i=0; i<elts.length; i++) {
  37. if (elts[i].className == "private") {
  38. elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
  39. "none":"");
  40. }
  41. }
  42. // Update all list items containing private objects.
  43. var elts = document.getElementsByTagName("ul");
  44. for(var i=0; i<elts.length; i++) {
  45. if (elts[i].className == "private") {
  46. elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
  47. }
  48. }
  49. // Set a cookie to remember the current option.
  50. document.cookie = "EpydocPrivate="+cmd;
  51. }
  52. function show_private() {
  53. var elts = document.getElementsByTagName("a");
  54. for(var i=0; i<elts.length; i++) {
  55. if (elts[i].className == "privatelink") {
  56. cmd = elts[i].innerHTML;
  57. if (cmd && cmd.substr(0,4)=="show")
  58. toggle_private();
  59. }
  60. }
  61. }
  62. function getCookie(name) {
  63. var dc = document.cookie;
  64. var prefix = name + "=";
  65. var begin = dc.indexOf("; " + prefix);
  66. if (begin == -1) {
  67. begin = dc.indexOf(prefix);
  68. if (begin != 0) return null;
  69. } else
  70. { begin += 2; }
  71. var end = document.cookie.indexOf(";", begin);
  72. if (end == -1)
  73. { end = dc.length; }
  74. return unescape(dc.substring(begin + prefix.length, end));
  75. }
  76. function setFrame(url1, url2) {
  77. parent.frames[1].location.href = url1;
  78. parent.frames[2].location.href = url2;
  79. }
  80. function checkCookie() {
  81. var cmd=getCookie("EpydocPrivate");
  82. if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
  83. toggle_private();
  84. }
  85. function toggleCallGraph(id) {
  86. var elt = document.getElementById(id);
  87. if (elt.style.display == "none")
  88. elt.style.display = "block";
  89. else
  90. elt.style.display = "none";
  91. }
  92. function expand(id) {
  93. var elt = document.getElementById(id+"-expanded");
  94. if (elt) elt.style.display = "block";
  95. var elt = document.getElementById(id+"-expanded-linenums");
  96. if (elt) elt.style.display = "block";
  97. var elt = document.getElementById(id+"-collapsed");
  98. if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
  99. var elt = document.getElementById(id+"-collapsed-linenums");
  100. if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
  101. var elt = document.getElementById(id+"-toggle");
  102. if (elt) { elt.innerHTML = "-"; }
  103. }
  104. function collapse(id) {
  105. var elt = document.getElementById(id+"-expanded");
  106. if (elt) elt.style.display = "none";
  107. var elt = document.getElementById(id+"-expanded-linenums");
  108. if (elt) elt.style.display = "none";
  109. var elt = document.getElementById(id+"-collapsed-linenums");
  110. if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
  111. var elt = document.getElementById(id+"-toggle");
  112. if (elt) { elt.innerHTML = "+"; }
  113. var elt = document.getElementById(id+"-collapsed");
  114. if (elt) {
  115. elt.style.display = "block";
  116. var indent = elt.getAttribute("indent");
  117. var pad = elt.getAttribute("pad");
  118. var s = "<tt class='py-lineno'>";
  119. for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
  120. s += "</tt>";
  121. s += "&nbsp;&nbsp;<tt class='py-line'>";
  122. for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
  123. s += "<a href='#' onclick='expand(\"" + id;
  124. s += "\");return false'>...</a></tt><br />";
  125. elt.innerHTML = s;
  126. }
  127. }
  128. function toggle(id) {
  129. elt = document.getElementById(id+"-toggle");
  130. if (elt.innerHTML == "-")
  131. collapse(id);
  132. else
  133. expand(id);
  134. return false;
  135. }
  136. function highlight(id) {
  137. var elt = document.getElementById(id+"-def");
  138. if (elt) elt.className = "py-highlight-hdr";
  139. var elt = document.getElementById(id+"-expanded");
  140. if (elt) elt.className = "py-highlight";
  141. var elt = document.getElementById(id+"-collapsed");
  142. if (elt) elt.className = "py-highlight";
  143. }
  144. function num_lines(s) {
  145. var n = 1;
  146. var pos = s.indexOf("\n");
  147. while ( pos > 0) {
  148. n += 1;
  149. pos = s.indexOf("\n", pos+1);
  150. }
  151. return n;
  152. }
  153. // Collapse all blocks that mave more than `min_lines` lines.
  154. function collapse_all(min_lines) {
  155. var elts = document.getElementsByTagName("div");
  156. for (var i=0; i<elts.length; i++) {
  157. var elt = elts[i];
  158. var split = elt.id.indexOf("-");
  159. if (split > 0)
  160. if (elt.id.substring(split, elt.id.length) == "-expanded")
  161. if (num_lines(elt.innerHTML) > min_lines)
  162. collapse(elt.id.substring(0, split));
  163. }
  164. }
  165. function expandto(href) {
  166. var start = href.indexOf("#")+1;
  167. if (start != 0 && start != href.length) {
  168. if (href.substring(start, href.length) != "-") {
  169. collapse_all(4);
  170. pos = href.indexOf(".", start);
  171. while (pos != -1) {
  172. var id = href.substring(start, pos);
  173. expand(id);
  174. pos = href.indexOf(".", pos+1);
  175. }
  176. var id = href.substring(start, href.length);
  177. expand(id);
  178. highlight(id);
  179. }
  180. }
  181. }
  182. function kill_doclink(id) {
  183. var parent = document.getElementById(id);
  184. parent.removeChild(parent.childNodes.item(0));
  185. }
  186. function auto_kill_doclink(ev) {
  187. if (!ev) var ev = window.event;
  188. if (!this.contains(ev.toElement)) {
  189. var parent = document.getElementById(this.parentID);
  190. parent.removeChild(parent.childNodes.item(0));
  191. }
  192. }
  193. function doclink(id, name, targets_id) {
  194. var elt = document.getElementById(id);
  195. // If we already opened the box, then destroy it.
  196. // (This case should never occur, but leave it in just in case.)
  197. if (elt.childNodes.length > 1) {
  198. elt.removeChild(elt.childNodes.item(0));
  199. }
  200. else {
  201. // The outer box: relative + inline positioning.
  202. var box1 = document.createElement("div");
  203. box1.style.position = "relative";
  204. box1.style.display = "inline";
  205. box1.style.top = 0;
  206. box1.style.left = 0;
  207. // A shadow for fun
  208. var shadow = document.createElement("div");
  209. shadow.style.position = "absolute";
  210. shadow.style.left = "-1.3em";
  211. shadow.style.top = "-1.3em";
  212. shadow.style.background = "#404040";
  213. // The inner box: absolute positioning.
  214. var box2 = document.createElement("div");
  215. box2.style.position = "relative";
  216. box2.style.border = "1px solid #a0a0a0";
  217. box2.style.left = "-.2em";
  218. box2.style.top = "-.2em";
  219. box2.style.background = "white";
  220. box2.style.padding = ".3em .4em .3em .4em";
  221. box2.style.fontStyle = "normal";
  222. box2.onmouseout=auto_kill_doclink;
  223. box2.parentID = id;
  224. // Get the targets
  225. var targets_elt = document.getElementById(targets_id);
  226. var targets = targets_elt.getAttribute("targets");
  227. var links = "";
  228. target_list = targets.split(",");
  229. for (var i=0; i<target_list.length; i++) {
  230. var target = target_list[i].split("=");
  231. links += "<li><a href='" + target[1] +
  232. "' style='text-decoration:none'>" +
  233. target[0] + "</a></li>";
  234. }
  235. // Put it all together.
  236. elt.insertBefore(box1, elt.childNodes.item(0));
  237. //box1.appendChild(box2);
  238. box1.appendChild(shadow);
  239. shadow.appendChild(box2);
  240. box2.innerHTML =
  241. "Which <b>"+name+"</b> do you want to see documentation for?" +
  242. "<ul style='margin-bottom: 0;'>" +
  243. links +
  244. "<li><a href='#' style='text-decoration:none' " +
  245. "onclick='kill_doclink(\""+id+"\");return false;'>"+
  246. "<i>None of the above</i></a></li></ul>";
  247. }
  248. return false;
  249. }
  250. function get_anchor() {
  251. var href = location.href;
  252. var start = href.indexOf("#")+1;
  253. if ((start != 0) && (start != href.length))
  254. return href.substring(start, href.length);
  255. }
  256. function redirect_url(dottedName) {
  257. // Scan through each element of the "pages" list, and check
  258. // if "name" matches with any of them.
  259. for (var i=0; i<pages.length; i++) {
  260. // Each page has the form "<pagename>-m" or "<pagename>-c";
  261. // extract the <pagename> portion & compare it to dottedName.
  262. var pagename = pages[i].substring(0, pages[i].length-2);
  263. if (pagename == dottedName.substring(0,pagename.length)) {
  264. // We've found a page that matches `dottedName`;
  265. // construct its URL, using leftover `dottedName`
  266. // content to form an anchor.
  267. var pagetype = pages[i].charAt(pages[i].length-1);
  268. var url = pagename + ((pagetype=="m")?"-module.html":
  269. "-class.html");
  270. if (dottedName.length > pagename.length)
  271. url += "#" + dottedName.substring(pagename.length+1,
  272. dottedName.length);
  273. return url;
  274. }
  275. }
  276. }