Skip to content

Commit 30a34a7

Browse files
committed
Gadgets/Stdrev: Refactor get_visibility_map to be more generic
1 parent afb835e commit 30a34a7

File tree

1 file changed

+24
-38
lines changed

1 file changed

+24
-38
lines changed

gadgets/standard_revisions.js

Lines changed: 24 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,27 @@ $(function() {
9999
{ rev: Rev.CXX20, title: 'C++20' },
100100
];
101101

102+
var rev_css_classes_c = [
103+
{ rev: Rev.C99, since: 't-since-c99', until: 't-until-c99' },
104+
{ rev: Rev.C11, since: 't-since-c11', until: 't-until-c11' },
105+
];
106+
107+
var rev_css_classes_cxx = [
108+
{ rev: Rev.CXX11, since: 't-since-cxx11', until: 't-until-cxx11' },
109+
{ rev: Rev.CXX14, since: 't-since-cxx14', until: 't-until-cxx14' },
110+
{ rev: Rev.CXX17, since: 't-since-cxx17', until: 't-until-cxx17' },
111+
{ rev: Rev.CXX20, since: 't-since-cxx20', until: 't-until-cxx20' },
112+
];
113+
102114
var desc;
115+
var rev_css_classes;
103116

104117
if (is_cxx) { // select either C or C++ version
105118
desc = desc_cxx;
119+
rev_css_classes = rev_css_classes_cxx;
106120
} else {
107121
desc = desc_c;
122+
rev_css_classes = rev_css_classes_c;
108123
}
109124

110125
/** A 'mark identifier' is an object that specifies a half-open range of
@@ -294,61 +309,32 @@ $(function() {
294309
visibility map corresponding to these css classes. Rev.DIFF is not
295310
included into the returned visibility map.
296311
*/
297-
function get_visibility_map_cxx(el) {
298-
// DIFF: 0, CXX98: 1, CXX11: 2, CXX14: 3, CXX17: 4, CXX20: 5
299-
var classes_cxx = [
300-
{ rev: Rev.CXX11, since: 't-since-cxx11', until: 't-until-cxx11' },
301-
{ rev: Rev.CXX14, since: 't-since-cxx14', until: 't-until-cxx14' },
302-
{ rev: Rev.CXX17, since: 't-since-cxx17', until: 't-until-cxx17' },
303-
{ rev: Rev.CXX20, since: 't-since-cxx20', until: 't-until-cxx20' },
304-
];
312+
function get_visibility_map(el) {
305313
var map = new VisibilityMap();
306-
for (var i = 0; i < classes_cxx.length; i++) {
307-
if (el.hasClass(classes_cxx[i].since)) {
314+
for (var i = 0; i < rev_css_classes.length; i++) {
315+
if (el.hasClass(rev_css_classes[i].since)) {
308316
break;
309317
}
310318
}
311-
if (i === classes_cxx.length) {
312-
map.add(Rev.CXX98);
319+
if (i === rev_css_classes.length) {
320+
map.add(Rev.FIRST);
313321
i = 0;
314322
}
315-
for (; i < classes_cxx.length; i++) {
316-
if (el.hasClass(classes_cxx[i].until)) {
323+
for (; i < rev_css_classes.length; i++) {
324+
if (el.hasClass(rev_css_classes[i].until)) {
317325
break;
318326
}
319-
map.add(classes_cxx[i].rev);
327+
map.add(rev_css_classes[i].rev);
320328
}
321329
return map;
322330
}
323331

324-
function get_visibility_map_c(el) {
325-
// DIFF: 0, C89: 1, C99: 2, C11: 3
326-
if (el.hasClass('t-since-c11')) {
327-
return new VisibilityMap([Rev.C11]);
328-
}
329-
if (el.hasClass('t-since-c99')) {
330-
if (el.hasClass('t-until-c11')) {
331-
return new VisibilityMap([Rev.C99]);
332-
}
333-
return new VisibilityMap([Rev.C99, Rev.C11]);
334-
}
335-
if (el.hasClass('t-until-c99')) {
336-
return new VisibilityMap([Rev.C89]);
337-
}
338-
if (el.hasClass('t-until-c11')) {
339-
return new VisibilityMap([Rev.C89, Rev.C99]);
340-
}
341-
return new VisibilityMap([Rev.C89, Rev.C99, Rev.C11]);
342-
}
343-
344-
var get_mark, get_visibility_map;
332+
var get_mark;
345333

346334
if (is_cxx) { // select either C or C++ version
347335
get_mark = get_mark_cxx;
348-
get_visibility_map = get_visibility_map_cxx;
349336
} else {
350337
get_mark = get_mark_c;
351-
get_visibility_map = get_visibility_map_c;
352338
}
353339

354340
/** This class keeps track of objects that need to be shown or hidden for

0 commit comments

Comments
 (0)