diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d216f29f..359d0d6d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,13 +12,14 @@ nexus-publish = "2.0.0-rc-1" # For sample compose-compiler = "1.5.4" activity-compose = "1.8.1" -voyager = "1.0.0-rc10" +voyager = "1.0.0" richeditor = "1.0.0-beta05" android-minSdk = "21" android-compileSdk = "34" [libraries] -ksoup = { module = "com.mohamedrejeb.ksoup:ksoup-html", version.ref = "ksoup" } +ksoup-html = { module = "com.mohamedrejeb.ksoup:ksoup-html", version.ref = "ksoup" } +ksoup-entities = { module = "com.mohamedrejeb.ksoup:ksoup-entities", version.ref = "ksoup" } jetbrains-markdown = { module = "org.jetbrains:markdown", version.ref = "jetbrainsMarkdown" } nexus-publish = { module = "io.github.gradle-nexus.publish-plugin:io.github.gradle-nexus.publish-plugin.gradle.plugin", version.ref = "nexus-publish" } diff --git a/richeditor-compose/build.gradle.kts b/richeditor-compose/build.gradle.kts index fb306253..4db2c416 100644 --- a/richeditor-compose/build.gradle.kts +++ b/richeditor-compose/build.gradle.kts @@ -34,7 +34,8 @@ kotlin { implementation(compose.material3) // HTML parsing library - implementation(libs.ksoup) + implementation(libs.ksoup.html) + implementation(libs.ksoup.entities) // Markdown parsing library implementation(libs.jetbrains.markdown) diff --git a/richeditor-compose/src/androidUnitTest/kotlin/com.mohamedrejeb.richeditor/model/RichTextStateTest.kt b/richeditor-compose/src/androidUnitTest/kotlin/com.mohamedrejeb.richeditor/model/RichTextStateTest.kt deleted file mode 100644 index d48f54ce..00000000 --- a/richeditor-compose/src/androidUnitTest/kotlin/com.mohamedrejeb.richeditor/model/RichTextStateTest.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.mohamedrejeb.richeditor.model - -class RichTextStateTest { - - - -} \ No newline at end of file diff --git a/richeditor-compose/src/commonMain/kotlin/com/mohamedrejeb/richeditor/parser/html/RichTextStateHtmlParser.kt b/richeditor-compose/src/commonMain/kotlin/com/mohamedrejeb/richeditor/parser/html/RichTextStateHtmlParser.kt index 5b9d0268..d19896bd 100644 --- a/richeditor-compose/src/commonMain/kotlin/com/mohamedrejeb/richeditor/parser/html/RichTextStateHtmlParser.kt +++ b/richeditor-compose/src/commonMain/kotlin/com/mohamedrejeb/richeditor/parser/html/RichTextStateHtmlParser.kt @@ -1,6 +1,7 @@ package com.mohamedrejeb.richeditor.parser.html import androidx.compose.ui.text.SpanStyle +import com.mohamedrejeb.ksoup.entities.KsoupEntities import com.mohamedrejeb.ksoup.html.parser.KsoupHtmlHandler import com.mohamedrejeb.ksoup.html.parser.KsoupHtmlParser import com.mohamedrejeb.richeditor.model.* @@ -30,9 +31,11 @@ internal object RichTextStateHtmlParser : RichTextStateParser { val lastOpenedTag = openedTags.lastOrNull()?.first if (lastOpenedTag in skippedHtmlElements) return@onText - val addedText = removeHtmlTextExtraSpaces( - input = it, - trimStart = stringBuilder.lastOrNull() == ' ' || stringBuilder.lastOrNull() == '\n', + val addedText = KsoupEntities.decodeHtml( + removeHtmlTextExtraSpaces( + input = it, + trimStart = stringBuilder.lastOrNull() == ' ' || stringBuilder.lastOrNull() == '\n', + ) ) if (addedText.isEmpty()) return@onText @@ -253,7 +256,7 @@ internal object RichTextStateHtmlParser : RichTextStateParser { } // Append text - stringBuilder.append(richSpan.text) + stringBuilder.append(KsoupEntities.encodeHtml(richSpan.text)) // Append children richSpan.children.fastForEach { child ->