forked from pulumi/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlangchoose.js
91 lines (85 loc) · 3.35 KB
/
langchoose.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
function getElemClasses(e) {
return ($(e).attr("class") || "").split(/\s+/);
}
// selectLanguage will remember a given language as a preferred setting using a cookie and walk the DOM enabling
// all code tabs and snippets for this language, and disabling those for unselected languages.
function selectLanguage(lang) {
$(function() {
document.cookie = "pulumi_language=" + lang;
// Change the active tab.
var langTabs = 0;
$("a").each(function (i, e) {
var classes = getElemClasses(e);
for (var i = 0; i < classes.length; i++) {
if (classes[i] === "langtab") {
langTabs++;
if (e.innerText.toLowerCase() === lang) {
$(e).addClass("is-active");
} else {
$(e).removeClass("is-active");
}
break;
}
}
});
// If and only if we found tabs, hide divs for the relevant languages.
if (langTabs > 0) {
// Highlighted code blocks:
$("div").each(function (i, e) {
var classes = getElemClasses(e);
for (var i = 0; i < classes.length; i++) {
if (classes[i].startsWith("language-") && classes[i] !== "language-bash") {
if (classes[i] === "language-"+lang) {
$(e).show();
} else {
$(e).hide();
}
break;
}
}
});
// Any explicit prologue elements:
$("div").each(function (i, e) {
var classes = getElemClasses(e);
for (var i = 0; i < classes.length; i++) {
if (classes[i].startsWith("language-prologue-")) {
var next = $(e).next();
if (next) {
if (classes[i] === "language-prologue-"+lang) {
$(next).show();
} else {
$(next).hide();
}
}
break;
}
}
});
}
});
}
// The first time the DOM is finished loading, select the right language. If no language is set as the preferred
// language yet, then JavaScript is chosen as the preferred language as a default.
$(function() {
// For every language tab, inject a handler and make the correct one hidden.
$("a").each(function (i, e) {
var classes = getElemClasses(e);
for (var i = 0; i < classes.length; i++) {
if (classes[i] === "langtab") {
var lang = e.innerText.toLowerCase();
e.addEventListener('click', function() {
selectLanguage(lang);
});
break;
}
}
});
// Now select the right language based on whether there's a cookie (defaulting to JavaScript).
var langCookie = decodeURIComponent(
document.cookie.replace(/(?:(?:^|.*;\s*)pulumi_language\s*\=\s*([^;]*).*$)|^.*$/, "$1"));
if (langCookie) {
selectLanguage(langCookie);
} else {
selectLanguage("javascript");
}
});