From 1ddeeba16cdef890d299b6c5b5293eb78b4632fe Mon Sep 17 00:00:00 2001 From: tkadziolka Date: Sat, 11 May 2024 19:35:59 +0200 Subject: [PATCH] Some changes --- desktopExample/build.gradle.kts | 3 ++- gradle/libs.versions.toml | 2 +- .../dev/snipme/kodeview/view/CodeTextView.kt | 27 +++++++++++++++++++ .../TextExtensions.kt} | 9 +++++++ webExample/build.gradle.kts | 2 +- 5 files changed, 40 insertions(+), 3 deletions(-) rename kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/{CodeEditTextExtensions.kt => internal/TextExtensions.kt} (82%) diff --git a/desktopExample/build.gradle.kts b/desktopExample/build.gradle.kts index 5cb0a46..5eb020a 100644 --- a/desktopExample/build.gradle.kts +++ b/desktopExample/build.gradle.kts @@ -14,7 +14,8 @@ dependencies { @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) implementation(compose.components.resources) implementation(compose.desktop.currentOs) - implementation(libs.kodeview) + // local module kodeview + implementation(project(":kodeview")) } compose.desktop { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 603a52d..4097735 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,7 +9,7 @@ kotlinMultiplatform = "1.9.21" compose = "1.5.11" androidLibrary = "8.1.1" kodeview = "0.8.0" -highlights = "0.7.1" +highlights = "0.9.0" composeMaterial = "1.2.1" [libraries] diff --git a/kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/CodeTextView.kt b/kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/CodeTextView.kt index 7b7dd68..c31e534 100644 --- a/kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/CodeTextView.kt +++ b/kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/CodeTextView.kt @@ -9,9 +9,12 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.SpanStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextGeometricTransform import dev.snipme.highlights.Highlights import dev.snipme.highlights.model.BoldHighlight import dev.snipme.highlights.model.ColorHighlight +import dev.snipme.highlights.model.PhraseLocation +import generateWithLineNumbers @Composable fun CodeTextView( @@ -26,6 +29,14 @@ fun CodeTextView( highlights.getHighlights() .filterIsInstance() + .map { + it.copy( + location = PhraseLocation( + start = it.location.start + 4, + end = it.location.end + 4, + ) + ) + } .forEach { addStyle( SpanStyle(color = Color(it.rgb).copy(alpha = 1f)), @@ -36,6 +47,14 @@ fun CodeTextView( highlights.getHighlights() .filterIsInstance() + .map { + it.copy( + location = PhraseLocation( + start = it.location.start + 4, + end = it.location.end + 4, + ) + ) + } .forEach { addStyle( SpanStyle(fontWeight = FontWeight.Bold), @@ -43,6 +62,14 @@ fun CodeTextView( end = it.location.end, ) } + + addStyle( + SpanStyle(textGeometricTransform = TextGeometricTransform( + skewX = 0.1f, + )), + start = 0, + end = 4, + ) }) } } \ No newline at end of file diff --git a/kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/CodeEditTextExtensions.kt b/kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/internal/TextExtensions.kt similarity index 82% rename from kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/CodeEditTextExtensions.kt rename to kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/internal/TextExtensions.kt index 2365479..9c8c6f7 100644 --- a/kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/CodeEditTextExtensions.kt +++ b/kodeview/src/commonMain/kotlin/dev/snipme/kodeview/view/internal/TextExtensions.kt @@ -41,4 +41,13 @@ internal fun AnnotatedString.Builder.generateAnnotatedString(highlights: Highlig end = it.location.end, ) } +} + +internal fun String.generateWithLineNumbers(): String { + val lines = this.split("\n") + val maxLineNumber = lines.size.toString().length + return lines.mapIndexed { index, line -> + val lineNumber = (index + 1).toString().padStart(maxLineNumber, ' ') + "$lineNumber | $line" + }.joinToString("\n") } \ No newline at end of file diff --git a/webExample/build.gradle.kts b/webExample/build.gradle.kts index 745957c..5431cfa 100644 --- a/webExample/build.gradle.kts +++ b/webExample/build.gradle.kts @@ -18,7 +18,7 @@ kotlin { implementation(compose.material) implementation(compose.material3) implementation(compose.materialIconsExtended) - implementation(libs.kodeview) + implementation(project(":kodeview")) } } }