|
189 | 189 |
|
190 | 190 | let languagesSelect = document.createElement("select"); |
191 | 191 | languagesSelect.classList.add("small"); |
192 | | - // languagesSelect.id = "mySelect"; |
193 | 192 |
|
194 | | - //Create and append the options |
195 | | - for (var i = 0; i < Object.keys(Prism.languages).length; i++) { |
| 193 | + //sort available languages alphabetically (ignore case) |
| 194 | + let languages = Object.keys(Prism.languages).sort(function (a, b) { |
| 195 | + return a.toLowerCase().localeCompare(b.toLowerCase()); |
| 196 | + }); |
196 | 197 |
|
| 198 | + //Create and append the options |
| 199 | + for (var i = 0; i < languages.length; i++) { |
197 | 200 | // Weirdly PrismJS doesnt expose a list of installed languages, or rather it does, but it is mixed with helper functions, which i have to clear here. |
198 | | - if( !(Object.keys(Prism.languages)[i] == "extend") && !(Object.keys(Prism.languages)[i] == "insertBefore") && !(Object.keys(Prism.languages)[i] == "DFS")){ |
199 | | - |
200 | | - var option = document.createElement("option"); |
201 | | - option.value = Object.keys(Prism.languages)[i]; |
202 | | - option.text = Object.keys(Prism.languages)[i]; |
203 | | - if(Object.keys(Prism.languages)[i] == this.data.language){ |
204 | | - option.selected="selected" |
205 | | - } |
206 | | - languagesSelect.appendChild(option); |
207 | | - |
| 201 | + if (languages[i] == "extend" || languages[i] == "insertBefore" || languages[i] == "DFS") { |
| 202 | + continue; |
208 | 203 | } |
209 | 204 |
|
| 205 | + var option = document.createElement("option"); |
| 206 | + option.value = languages[i]; |
| 207 | + option.text = languages[i]; |
| 208 | + if(languages[i] == this.data.language){ |
| 209 | + option.selected="selected" |
| 210 | + } |
| 211 | + languagesSelect.appendChild(option); |
210 | 212 | } |
211 | 213 |
|
212 | 214 | languagesSelect.addEventListener('change', (event) => { |
|
0 commit comments