diff options
| author | Martin Fischer <martin@push-f.com> | 2021-12-26 18:54:55 +0100 |
|---|---|---|
| committer | Martin Fischer <martin@push-f.com> | 2021-12-26 21:55:46 +0100 |
| commit | 1cfd2b544e5f17d70279cf7e87d2701eeea81c64 (patch) | |
| tree | dd8b2ce5ebcc6d9c1903215cc70ffdd7817fc631 | |
| parent | 855d91063bf3450a97dec50874c637c707046f7d (diff) | |
| download | pygments-git-1cfd2b544e5f17d70279cf7e87d2701eeea81c64.tar.gz | |
demo: fix lexer guessing based on filename
| -rw-r--r-- | doc/_static/demo-worker.js | 7 | ||||
| -rw-r--r-- | doc/_static/demo.js | 17 | ||||
| -rw-r--r-- | doc/_templates/demo.html | 2 |
3 files changed, 11 insertions, 15 deletions
diff --git a/doc/_static/demo-worker.js b/doc/_static/demo-worker.js index 946c7f7d..efb8b123 100644 --- a/doc/_static/demo-worker.js +++ b/doc/_static/demo-worker.js @@ -30,6 +30,7 @@ self.onmessage = async (event) => { self.postMessage({html}); } else if (event.data.guess_lexer) { self.pyodide.globals['code'] = event.data.guess_lexer.code; + self.pyodide.globals['filename'] = event.data.guess_lexer.filename; const lexer = self.pyodide.runPython(` import sys sys.setrecursionlimit(1000) @@ -41,7 +42,11 @@ self.onmessage = async (event) => { if type(code) == memoryview: code = bytes(code) - pygments.lexers.guess_lexer(code).aliases[0] + if filename: + lexer = pygments.lexers.guess_lexer_for_filename(filename, code) + else: + lexer = pygments.lexers.guess_lexer(code) + lexer.aliases[0] `); self.postMessage({lexer}); } else { diff --git a/doc/_static/demo.js b/doc/_static/demo.js index 279c3820..9e226a22 100644 --- a/doc/_static/demo.js +++ b/doc/_static/demo.js @@ -49,18 +49,6 @@ highlightWorker.onmessage = async (msg) => { } }; -function new_file() { - pyodide.globals.fname = document.getElementById("file").files[0].name; - var alias = pyodide.runPython('pygments.lexers.find_lexer_class_for_filename(fname).aliases[0]'); - var sel = document.getElementById("lang"); - for (var i = 0; i < sel.length; i++) { - if (sel.options[i].value == alias) { - sel.selectedIndex = i; - break; - } - } -} - async function highlight(guessedLexer) { var lexer = langSelect.value || guessedLexer; var file = document.getElementById("file").files[0]; @@ -77,7 +65,10 @@ async function highlight(guessedLexer) { loadingDiv.hidden = false; if (!lexer) { - highlightWorker.postMessage({guess_lexer: {code}}); + const guess_lexer = {code}; + if (file) + guess_lexer.filename = file.name; + highlightWorker.postMessage({guess_lexer}); document.getElementById('loading-text').textContent = 'guessing lexer...'; return; } diff --git a/doc/_templates/demo.html b/doc/_templates/demo.html index 9190aeec..f37784c4 100644 --- a/doc/_templates/demo.html +++ b/doc/_templates/demo.html @@ -33,7 +33,7 @@ </p> <p> <label>Upload a file here: - <input type="file" id="file" onchange="new_file()"> or enter code below: + <input type="file" id="file"> or enter code below: </label> </p> <p> |
