/
doc.js
109 lines (92 loc) · 2.25 KB
/
doc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
$(function()
{
function email()
{
// http://rumkin.com/tools/mailto_encoder/simple.php
var ML=":\"<ab.ixrgf=oetl @h>mvc/";
var MI="23@B8=:;1D36?><03?=759<843>FB=EA9D36?5F<D1C3?=759<843>FB=EA9D36?5F<D2G3C";
var OT="";
for(j=0;j<MI.length;j++){
OT+=ML.charAt(MI.charCodeAt(j)-48);
}
return OT;
};
function enhanceMethodSignature(a)
{
var html = a.html();
html = html.replace(/\((.+)\)\s*$/, function(match, args)
{
return '('
+ args.replace(/\w+/g, function(arg)
{
return '<span class="param">' + arg + '</span>';
})
+ ')'
;
});
a.html(html);
function getParam(a)
{
return $(a)
.parents('.method:first')
.find('.params .' + $(a).text())
.parents('li:first')
;
};
a.find('.param').hover(
function() { getParam(this).addClass('highlight') },
function() { getParam(this).removeClass('highlight') }
);
};
// common DOM updates
(function()
{
$('#content').find('h1,h2,h3').wrapInner('<div class="page-header"/>');
$('#nav').find('.' + ($(document.body).data('section') || 'nada')).addClass('active');
})();
// add TOC to the API doc page
(function()
{
var row = $('<div class="row"/>');
$('#toc').append(row);
$('#api section h3').each(function()
{
var h3 = $(this),
links = h3.parent().find('h4 a'),
block
;
if(links.length == 0)
return;
links = links.map(function()
{
var a = $(this);
enhanceMethodSignature(a);
return '<li><a href="#' + a.attr('name') + '">' + a.text().replace(/^[A-Z]\w+\./, '') + '</a></li>';
})
.toArray();
block = $('<div class="span4 columns"><h4>' + h3.html() + '</h4><ul>' + links.join('') + '</ul></div>');
row.append(block);
});
})();
(function()
{
var params = /^([\w\.\…]+) (\{\w+\})?(.*)$/;
$('#api ul.params li > p').each(function()
{
var p = $(this),
html = p.html(),
match = html.match(params)
;
if(match)
{
p.html(
'<code class="var ' + match[1] + '">' + match[1] + '</code> '
+ (match[2] ? '<code class="type">' + match[2] + '</code> ' : '')
+ '<span class="desc">' + match[3] + '</span>'
);
}
});
})();
$('a').filter('*[href^="http://"], *[href^="https://"]').addClass('external');
$('.email').html(email());
});