Commit | Line | Data |
---|---|---|
6a1aa64f DV |
1 | function function_ref(fn) { |
2 | return A({"href": fn[1], "class": "mochiref reference"}, fn[0], BR()); | |
3 | }; | |
4 | ||
5 | function toggle_docs() { | |
6 | toggleElementClass("invisible", "show_index", "function_index"); | |
7 | return false; | |
8 | }; | |
9 | ||
10 | function create_toc() { | |
11 | if (getElement("distribution")) { | |
12 | return global_index(); | |
13 | } | |
14 | if (getElement("api-reference")) { | |
15 | return module_index(); | |
16 | } | |
17 | }; | |
18 | ||
19 | function doXHTMLRequest(url) { | |
20 | var d = doXHR(url, {mimeType: 'text/xml'}); | |
21 | return d.addCallback(function (res) { | |
22 | if (res.responseXML.documentElement) { | |
23 | return res.responseXML.documentElement; | |
24 | } else { | |
25 | var container = document.createElement('div'); | |
26 | container.innerHTML = res.responseText; | |
27 | return container; | |
28 | } | |
29 | }); | |
30 | }; | |
31 | ||
32 | function load_request(href, div, doc) { | |
33 | var functions = withDocument(doc, spider_doc); | |
34 | forEach(functions, function (func) { | |
35 | // fix anchors | |
36 | if (func[1].charAt(0) == "#") { | |
37 | func[1] = href + func[1]; | |
38 | } else if (func[1].lastIndexOf("#") != -1) { | |
39 | func[1] = href + "#" + func[1].split("#")[1]; | |
40 | } | |
41 | }); | |
42 | var showLink = A({"class": "force-pointer"}, "[+]"); | |
43 | var hideLink = A({"class": "force-pointer"}, "[\u2013]"); | |
44 | var functionIndex = DIV({"id": "function_index", "class": "invisible"}, | |
45 | hideLink, | |
46 | P(null, map(function_ref, functions)) | |
47 | ); | |
48 | var toggleFunc = function (e) { | |
49 | toggleElementClass("invisible", showLink, functionIndex); | |
50 | }; | |
51 | connect(showLink, "onclick", toggleFunc); | |
52 | connect(hideLink, "onclick", toggleFunc); | |
53 | replaceChildNodes(div, | |
54 | showLink, | |
55 | functionIndex | |
56 | ); | |
57 | return [showLink, toggleFunc]; | |
58 | }; | |
59 | ||
60 | function global_index() { | |
61 | var distList = getElementsByTagAndClassName("ul")[0]; | |
62 | var bullets = getElementsByTagAndClassName("li", null, distList); | |
63 | var lst = []; | |
64 | for (var i = 0; i < bullets.length; i++) { | |
65 | var tag = bullets[i]; | |
66 | var firstLink = getElementsByTagAndClassName("a", "mochiref", tag)[0]; | |
67 | var href = getNodeAttribute(firstLink, "href"); | |
68 | var div = DIV(null, "[\u2026]"); | |
69 | appendChildNodes(tag, BR(), div); | |
70 | lst.push(doXHTMLRequest(href).addCallback(load_request, href, div)); | |
71 | } | |
72 | ||
73 | var loadingNode = DIV(null, "[loading index\u2026]"); | |
74 | distList.parentNode.insertBefore(P(null, loadingNode), distList); | |
75 | ||
76 | var dl = gatherResults(lst).addCallback(function (res) { | |
77 | var toggleFunc = function (e) { | |
78 | for (var i = 0; i < res.length; i++) { | |
79 | var item = res[i]; | |
80 | if (!hasElementClass(item[0], "invisible")) { | |
81 | item[1](); | |
82 | } | |
83 | } | |
84 | }; | |
85 | var node = A({"class": "force-pointer"}, "[click to expand all]"); | |
86 | swapDOM(loadingNode, node); | |
87 | connect(node, "onclick", toggleFunc); | |
88 | }); | |
89 | }; | |
90 | ||
91 | function spider_doc() { | |
92 | return map( | |
93 | function (tag) { | |
94 | return [scrapeText(tag), getNodeAttribute(tag, "href")]; | |
95 | }, | |
96 | getElementsByTagAndClassName("a", "mochidef") | |
97 | ); | |
98 | }; | |
99 | ||
100 | function module_index() { | |
101 | var sections = getElementsByTagAndClassName("div", "section"); | |
102 | var ptr = sections[1]; | |
103 | var ref = DIV({"class": "section"}, | |
104 | H1(null, "Function Index"), | |
105 | A({"id": "show_index", "href": "#", "onclick": toggle_docs}, "[show]"), | |
106 | DIV({"id": "function_index", "class": "invisible"}, | |
107 | A({"href":"#", "onclick": toggle_docs}, "[hide]"), | |
108 | P(null, map(function_ref, spider_doc())))); | |
109 | ptr.parentNode.insertBefore(ref, ptr); | |
110 | }; | |
111 | ||
112 | connect(window, 'onload', create_toc); | |
113 |