Skip to content
This repository was archived by the owner on Jan 13, 2024. It is now read-only.

Commit 55bf823

Browse files
committed
Make list of available languages sorted for better UX
1 parent e4d1417 commit 55bf823

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/codeflask.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -189,20 +189,23 @@
189189

190190
let languagesSelect = document.createElement("select");
191191
languagesSelect.classList.add("small");
192-
// languagesSelect.id = "mySelect";
193192

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+
});
196197

198+
//Create and append the options
199+
for (var i = 0; i < languages.length; i++) {
197200
// 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") {
201+
if (languages[i] == "extend" || languages[i] == "insertBefore" || languages[i] == "DFS") {
199202
continue;
200203
}
201204

202205
var option = document.createElement("option");
203-
option.value = Object.keys(Prism.languages)[i];
204-
option.text = Object.keys(Prism.languages)[i];
205-
if(Object.keys(Prism.languages)[i] == this.data.language){
206+
option.value = languages[i];
207+
option.text = languages[i];
208+
if(languages[i] == this.data.language){
206209
option.selected="selected"
207210
}
208211
languagesSelect.appendChild(option);

0 commit comments

Comments
 (0)