From de12b6e374ebb8fef37eb5263dae5256b0b2e14c Mon Sep 17 00:00:00 2001 From: penw0lf Date: Sat, 5 Oct 2024 23:48:22 +0530 Subject: [PATCH 1/2] Added default lexer, Fix #746 --- codethesaurus/settings.py | 4 ++++ web/views.py | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/codethesaurus/settings.py b/codethesaurus/settings.py index 2ce80463c..50f9ecae3 100644 --- a/codethesaurus/settings.py +++ b/codethesaurus/settings.py @@ -177,5 +177,9 @@ } } +SIMILAR_LEXERS = { + "clips": "prolog", +} + # Configure Django App for Heroku. django_on_heroku.settings(locals(), test_runner=False, databases=False, staticfiles=True, logging=True) diff --git a/web/views.py b/web/views.py index 52a090221..c6aecd0f9 100644 --- a/web/views.py +++ b/web/views.py @@ -16,6 +16,8 @@ from pygments import highlight from pygments.formatters.html import HtmlFormatter from pygments.lexers import get_lexer_by_name +from pygments.util import ClassNotFound +from django.conf import settings from web.models import ( Language, @@ -307,6 +309,15 @@ def error_handler_500_server_error(request): response = render(request, 'error500.html') return HttpResponseServerError(response) +#get lexer +def get_highlighter(language): + SIMILAR_LEXERS = settings.SIMILAR_LEXERS + try: + lexer = get_lexer_by_name(language, startinline=True) + except ClassNotFound: + + lexer = get_lexer_by_name(SIMILAR_LEXERS.get(language, "text"), startinline=True) + return lexer # Helper functions def format_code_for_display(concept_key, lang): @@ -322,9 +333,10 @@ def format_code_for_display(concept_key, lang): if lang.concept_unknown(concept_key) or lang.concept_code(concept_key) is None: return "Unknown" if lang.concept_implemented(concept_key): + lexer = get_highlighter(lang.key) return highlight( lang.concept_code(concept_key), - get_lexer_by_name(lang.key, startinline=True), + lexer, HtmlFormatter() ) return None From 25d76f745ec54f77896e29237bb13166ea0b2b8c Mon Sep 17 00:00:00 2001 From: penw0lf Date: Sun, 6 Oct 2024 00:55:12 +0530 Subject: [PATCH 2/2] Removed extra line --- web/views.py | 1 - 1 file changed, 1 deletion(-) diff --git a/web/views.py b/web/views.py index c6aecd0f9..9584e7ef7 100644 --- a/web/views.py +++ b/web/views.py @@ -315,7 +315,6 @@ def get_highlighter(language): try: lexer = get_lexer_by_name(language, startinline=True) except ClassNotFound: - lexer = get_lexer_by_name(SIMILAR_LEXERS.get(language, "text"), startinline=True) return lexer