Skip to content

Commit adfbfbb

Browse files
committed
Link to callbacks from the function view
Callbacks don't get a history view or appear in the "also in this group", as they're not quite functions.
1 parent c53572a commit adfbfbb

File tree

3 files changed

+48
-22
lines changed

3 files changed

+48
-22
lines changed

lib/docurium.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,6 @@ def update_globals!(data, recs)
394394
data[t][r[:name]] ||= {}
395395
wanted[:functions].each do |k|
396396
next unless r.has_key? k
397-
conents = nil
398397
if k == :description || k == :comments
399398
contents = md.render r[k]
400399
else

site/index.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ <h3>signature</h3>
138138
<code class="params"><%= sig %></code>
139139
</div>
140140
<!-- function history -->
141+
<% if (sigs) { %>
141142
<div class="signatures">
142143
<h3>versions</h3>
143144
<ul>
@@ -146,6 +147,7 @@ <h3>versions</h3>
146147
<% }) %>
147148
</ul>
148149
</div>
150+
<% } %> <!-- if we have version history -->
149151
<div class="fileLink">Defined in: <a href="<%= fileLink %>"> <%= data.file %></a></div>
150152
<% if (data.examples) { %>
151153
<div class="funcEx">Used in examples:
@@ -161,6 +163,7 @@ <h3>versions</h3>
161163
</ul>
162164
</div>
163165
<% } %> <!-- if we have examples -->
166+
<% if (alsoLinks) { %>
164167
<div class="also">
165168
Also in <a href="<%= alsoGroup %>"><%= groupName %></a> group: <br/>
166169
<% _.each(_.initial(alsoLinks), function(link) { %>
@@ -169,6 +172,7 @@ <h3>versions</h3>
169172
<% var link = _.last(alsoLinks) %>
170173
<a href="<%= link.url %>"><%= link.name %></a>
171174
</div>
175+
<% } %> <!-- if we have "also" links -->
172176
</script>
173177

174178
<!-- main page, list of groups and their functions -->

site/js/docurium.js

Lines changed: 44 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -213,42 +213,54 @@ $(function() {
213213
var fname = this.get('fname')
214214
var docurium = this.get('docurium')
215215

216+
var isCallback = gname === 'callback'
216217
var group = docurium.getGroup(gname)
217218

218219
var fdata = docurium.get('data')['functions']
219-
var functions = group[1]
220+
221+
var ldata = fdata
222+
if (isCallback) {
223+
var cdata = docurium.get('data')['callbacks']
224+
ldata = cdata
225+
} else {
226+
var functions = group[1]
227+
}
220228

221229
// Function Arguments
222-
var args = _.map(fdata[fname]['args'], function(arg) {
230+
var args = _.map(ldata[fname]['args'], function(arg) {
223231
return {link: this.hotLink(arg.type), name: arg.name, comment: arg.comment}
224232
}, docurium)
225233

226-
var data = fdata[fname]
234+
var data = ldata[fname]
227235
// function return value
228236
var ret = data['return']
229237
var returns = {link: docurium.hotLink(ret.type), comment: ret.comment}
230238
// function signature
231239
var sig = docurium.hotLink(ret.type) + ' ' + fname + '(' + data['argline'] + ');'
232240
// version history
233-
var sigHist = docurium.get('signatures')[fname]
234-
var version = docurium.get('version')
235-
var sigs = _.map(sigHist.exists, function(ver) {
236-
var klass = []
237-
if (sigHist.changes[ver])
238-
klass.push('changed')
239-
if (ver == version)
240-
klass.push('current')
241-
242-
return {url: '#' + functionLink(gname, fname, ver), name: ver, klass: klass.join(' ')}
243-
})
241+
if (!isCallback) {
242+
var sigHist = docurium.get('signatures')[fname]
243+
var version = docurium.get('version')
244+
var sigs = _.map(sigHist.exists, function(ver) {
245+
var klass = []
246+
if (sigHist.changes[ver])
247+
klass.push('changed')
248+
if (ver == version)
249+
klass.push('current')
250+
251+
return {url: '#' + functionLink(gname, fname, ver), name: ver, klass: klass.join(' ')}
252+
})
253+
}
244254
// GitHub link
245255
var fileLink = docurium.github_file(data.file, data.line, data.lineto)
246256
// link to the group
247-
var version = docurium.get('version')
248-
var alsoGroup = '#' + groupLink(group[0], version)
249-
var alsoLinks = _.map(functions, function(f) {
250-
return {url: '#' + functionLink(gname, f, version), name: f}
251-
})
257+
if (!isCallback) {
258+
var version = docurium.get('version')
259+
var alsoGroup = '#' + groupLink(group[0], version)
260+
var alsoLinks = _.map(functions, function(f) {
261+
return {url: '#' + functionLink(gname, f, version), name: f}
262+
})
263+
}
252264

253265
this.set('data', {name: fname, data: data, args: args, returns: returns, sig: sig,
254266
sigs: sigs, fileLink: fileLink, groupName: gname,
@@ -381,6 +393,7 @@ $(function() {
381393
var group = o.group
382394
var gname = group[0]
383395
var fdata = o.functions
396+
var cdata = o.callbacks
384397
var version = o.version
385398

386399
this.functions = _.map(group[1], function(name) {
@@ -556,14 +569,23 @@ $(function() {
556569
hotLink: function(text) {
557570
types = this.get('data')['types']
558571
var version = this.get('version')
572+
559573
for(var i=0; i<types.length; i++) {
560574
type = types[i]
561575
typeName = type[0]
562576
typeData = type[1]
563-
re = new RegExp(typeName + ' ', 'gi');
577+
re = new RegExp(typeName + '\\s', 'gi');
564578
var link = $('<a>').attr('href', '#' + typeLink(typeName, version)).append(typeName)[0]
565579
text = text.replace(re, link.outerHTML + ' ')
566580
}
581+
582+
var callbacks = this.get('data')['callbacks']
583+
_.each(callbacks, function(cb, typeName) {
584+
re = new RegExp(typeName + '$', 'gi');
585+
var link = $('<a>').attr('href', '#' + functionLink('callback', typeName, version)).append(typeName)[0]
586+
text = text.replace(re, link.outerHTML + ' ')
587+
});
588+
567589
return text
568590
},
569591

@@ -624,8 +646,9 @@ $(function() {
624646
this.doc.setVersion(version)
625647
var group = this.doc.getGroup(gname)
626648
var fdata = this.doc.get('data')['functions']
649+
var cdata = this.doc.get('data')['callbacks']
627650
var version = this.doc.get('version')
628-
var view = new GroupView({group: group, functions: fdata, version: version})
651+
var view = new GroupView({group: group, functions: fdata, callbacks: cdata, version: version})
629652
this.mainView.setActive(view)
630653
},
631654

0 commit comments

Comments
 (0)