|
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