@@ -30,6 +30,91 @@ function addAnchors()
30
30
}
31
31
}
32
32
33
+ // Add a version selector button
34
+ function addVersionSelector ( ) {
35
+ // Latest version offered by the archive builds
36
+ // This needs to be manually updated after new versions have been archived
37
+ var currentArchivedVersion = 78 ;
38
+ // build URLs for dlang.org: DDoc + Dox
39
+ var ddocModuleURL = document . body . id . replace ( / [ . ] / g, "_" ) + ".html" ;
40
+ var ddoxModuleURL = document . body . id . replace ( / [ . ] / g, "/" ) + ".html" ;
41
+ var root = "phobos/" ;
42
+
43
+ var isSpec = window . location . pathname . indexOf ( "/spec/" ) >= 0 ;
44
+ if ( isSpec ) {
45
+ root = "spec/" ;
46
+ var uriParts = window . location . pathname . split ( "/" ) ;
47
+ ddocModuleURL = uriParts [ uriParts . length - 1 ] ;
48
+ // these versions use a different layout
49
+ var plainSpecVersions = [ "2.066" , "2.067" , "2.068" , "2.069" ] ;
50
+ }
51
+
52
+ // build list of versions available in the docarchives
53
+ var archivedVersions = [ ] ;
54
+ while ( currentArchivedVersion >= 66 ) {
55
+ archivedVersions . push ( "2.0" + currentArchivedVersion -- ) ;
56
+ }
57
+ archivedVersions = archivedVersions . map ( function ( e ) {
58
+ var currentRoot = root ;
59
+ if ( isSpec && plainSpecVersions . indexOf ( e ) >= 0 ) {
60
+ currentRoot = "" ;
61
+ }
62
+ return {
63
+ name : e ,
64
+ url : "https://docarchives.dlang.io/v" + e + ".0/" + currentRoot + ddocModuleURL ,
65
+ selected : false ,
66
+ } ;
67
+ } ) ;
68
+
69
+ var rootURL = location . href . split ( / \/ ( p h o b o s | l i b r a r y | s p e c ) ( - p r e r e l e a s e ) ? / ) [ 0 ]
70
+ var onlineVersions ;
71
+ if ( isSpec ) {
72
+ onlineVersions = [ {
73
+ name : "master" ,
74
+ url : rootURL + "/spec/" + ddocModuleURL ,
75
+ } ] ;
76
+ } else {
77
+ onlineVersions = [ {
78
+ name : "master" ,
79
+ url : rootURL + "/phobos-prerelease/" + ddocModuleURL ,
80
+ } , {
81
+ name : "master (ddox)" ,
82
+ url : rootURL + "/library-prerelease/" + ddoxModuleURL ,
83
+ } , {
84
+ name : "stable" ,
85
+ url : rootURL + "/phobos/" + ddocModuleURL ,
86
+ } , {
87
+ name : "stable (ddox)" ,
88
+ url : rootURL + "/library/" + ddoxModuleURL ,
89
+ } ] ;
90
+ }
91
+
92
+ // set the current URL as selected
93
+ var currentURL = location . href . split ( / [ # ? ] / ) [ 0 ] ;
94
+ onlineVersions . forEach ( function ( v , i ) {
95
+ onlineVersions [ i ] . selected = v . url === currentURL ;
96
+ } ) ;
97
+ // Don't show the option chooser if the page hasn't been recognized
98
+ // For example, Ddox symbol pages are currently not supported
99
+ if ( onlineVersions . filter ( function ( v ) { return v . selected } ) . length === 0 )
100
+ return ;
101
+
102
+ // build select box of all versions and append to current DOM
103
+ var versions = onlineVersions . concat ( archivedVersions ) ;
104
+ var options = versions . map ( function ( e , i ) {
105
+ return "<option value='" + i + "'" + ( e . selected ? "selected" : "" ) + ">" + e . name + "</option>" ;
106
+ } ) ;
107
+ $ ( "h1" ) . after ( "<div class='version-changer-container fa-select'><select id='version-changer'>" + options . join ( "" ) + "</select></div>" ) ;
108
+ // attach event listener to select box -> change URL
109
+ $ ( "#version-changer" ) . change ( function ( ) {
110
+ var selected = parseInt ( $ ( this ) . find ( "option:selected" ) . val ( ) ) ;
111
+ var option = versions [ selected ] ;
112
+ if ( ! option . selected ) {
113
+ window . location . href = option . url ;
114
+ }
115
+ } ) ;
116
+ }
117
+
33
118
function listanchors ( )
34
119
{
35
120
var hideTop = ( typeof inhibitQuickIndex !== 'undefined' ) ;
@@ -90,67 +175,7 @@ function listanchors()
90
175
e . innerHTML = newText ;
91
176
92
177
}
93
- function addVersionSelector ( ) {
94
- // Latest version offered by the archive builds
95
- // This needs to be manually updated after new versions have been archived
96
- var currentArchivedVersion = 78 ;
97
- // build URLs for dlang.org: DDoc + Dox
98
- var ddocModuleURL = document . body . id . replace ( / [ . ] / g, "_" ) + ".html" ;
99
- var ddoxModuleURL = document . body . id . replace ( / [ . ] / g, "/" ) + ".html" ;
100
-
101
- // build list of versions available in the docarchives
102
- var archivedVersions = [ ] ;
103
- while ( currentArchivedVersion >= 66 ) {
104
- archivedVersions . push ( "2.0" + currentArchivedVersion -- ) ;
105
- }
106
- archivedVersions = archivedVersions . map ( function ( e ) {
107
- return {
108
- name : e ,
109
- url : "https://docarchives.dlang.io/v" + e + ".0/phobos/" + ddocModuleURL ,
110
- selected : false ,
111
- } ;
112
- } ) ;
113
-
114
- var rootURL = location . href . split ( / \/ ( p h o b o s | l i b r a r y ) ( - p r e r e l e a s e ) ? / ) [ 0 ]
115
- var onlineVersions = [ {
116
- name : "master" ,
117
- url : rootURL + "/phobos-prerelease/" + ddocModuleURL ,
118
- } , {
119
- name : "master (ddox)" ,
120
- url : rootURL + "/library-prerelease/" + ddoxModuleURL ,
121
- } , {
122
- name : "stable" ,
123
- url : rootURL + "/phobos/" + ddocModuleURL ,
124
- } , {
125
- name : "stable (ddox)" ,
126
- url : rootURL + "/library/" + ddoxModuleURL ,
127
- } ] ;
128
178
129
- // set the current URL as selected
130
- var currentURL = location . href . split ( / [ # ? ] / ) [ 0 ] ;
131
- onlineVersions . forEach ( function ( v , i ) {
132
- onlineVersions [ i ] . selected = v . url === currentURL ;
133
- } ) ;
134
- // Don't show the option chooser if the page hasn't been recognized
135
- // For example, Ddox symbol pages are currently not supported
136
- if ( onlineVersions . filter ( function ( v ) { return v . selected } ) . length === 0 )
137
- return ;
138
-
139
- // build select box of all versions and append to current DOM
140
- var versions = onlineVersions . concat ( archivedVersions ) ;
141
- var options = versions . map ( function ( e , i ) {
142
- return "<option value='" + i + "'" + ( e . selected ? "selected" : "" ) + ">" + e . name + "</option>" ;
143
- } ) ;
144
- $ ( "h1" ) . after ( "<div class='version-changer-container fa-select'><select id='version-changer'>" + options . join ( "" ) + "</select></div>" ) ;
145
- // attach event listener to select box -> change URL
146
- $ ( "#version-changer" ) . change ( function ( ) {
147
- var selected = parseInt ( $ ( this ) . find ( "option:selected" ) . val ( ) ) ;
148
- var option = versions [ selected ] ;
149
- if ( ! option . selected ) {
150
- window . location . href = option . url ;
151
- }
152
- } ) ;
153
- }
154
179
addAnchors ( ) ;
155
180
addVersionSelector ( ) ;
156
181
}
0 commit comments