From 1897845a37f32a4ae20dc89aabbed737060fac6a Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Mon, 15 Jul 2024 02:53:25 +0200 Subject: [PATCH] Added python syntax highlight support --- .../PythonSyntaxHighlighter.kt | 44 +++++++++++++++++++ .../syntax_highlighter/SyntaxHighlighter.kt | 1 + 2 files changed, 45 insertions(+) create mode 100644 src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/PythonSyntaxHighlighter.kt diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/PythonSyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/PythonSyntaxHighlighter.kt new file mode 100644 index 0000000..d7a15a2 --- /dev/null +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/PythonSyntaxHighlighter.kt @@ -0,0 +1,44 @@ +package com.jetpackduba.gitnuro.ui.diff.syntax_highlighter + +class PythonSyntaxHighlighter : SyntaxHighlighter() { + override fun loadKeywords(): List = listOf( + "False", + "await", + "else", + "import", + "pass", + "None", + "break", + "except", + "in", + "raise", + "True", + "class", + "finally", + "is", + "return", + "and", + "continue", + "for", + "lambda", + "try", + "as", + "def", + "from", + "nonlocal", + "while", + "assert", + "del", + "global", + "not", + "with", + "async", + "elif", + "if", + "or", + "yield", + ) + + override fun isAnnotation(word: String): Boolean = word.startsWith("@") + override fun isComment(line: String): Boolean = line.startsWith("//") +} diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SyntaxHighlighter.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SyntaxHighlighter.kt index 98878ca..a51b095 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SyntaxHighlighter.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/diff/syntax_highlighter/SyntaxHighlighter.kt @@ -77,4 +77,5 @@ private enum class HighlightLanguagesSupported(val extensions: List, val Kotlin(listOf("kt", "kts"), { KotlinSyntaxHighlighter() }), Rust(listOf("rs"), { RustSyntaxHighlighter() }), TypeScript(listOf("js", "jsx", "ts", "tsx", "vue", "astro"), { TypeScriptSyntaxHighlighter() }), + Python(listOf("py"), { PythonSyntaxHighlighter() }), } \ No newline at end of file