mirror of
https://github.com/jlengrand/compose-multiplatform.git
synced 2026-03-10 15:48:51 +00:00
Examples. Codeviewer. Fix java.lang.StringIndexOutOfBoundsException
This commit is contained in:
@@ -145,41 +145,42 @@ private fun LineContent(content: Editor.Content, modifier: Modifier, settings: S
|
||||
|
||||
private fun codeString(str: String) = buildAnnotatedString {
|
||||
withStyle(AppTheme.code.simple) {
|
||||
append(str.replace("\t", " "))
|
||||
addStyle(AppTheme.code.punctuation, ":")
|
||||
addStyle(AppTheme.code.punctuation, "=")
|
||||
addStyle(AppTheme.code.punctuation, "\"")
|
||||
addStyle(AppTheme.code.punctuation, "[")
|
||||
addStyle(AppTheme.code.punctuation, "]")
|
||||
addStyle(AppTheme.code.punctuation, "{")
|
||||
addStyle(AppTheme.code.punctuation, "}")
|
||||
addStyle(AppTheme.code.punctuation, "(")
|
||||
addStyle(AppTheme.code.punctuation, ")")
|
||||
addStyle(AppTheme.code.punctuation, ",")
|
||||
addStyle(AppTheme.code.keyword, "fun ")
|
||||
addStyle(AppTheme.code.keyword, "val ")
|
||||
addStyle(AppTheme.code.keyword, "var ")
|
||||
addStyle(AppTheme.code.keyword, "private ")
|
||||
addStyle(AppTheme.code.keyword, "internal ")
|
||||
addStyle(AppTheme.code.keyword, "for ")
|
||||
addStyle(AppTheme.code.keyword, "expect ")
|
||||
addStyle(AppTheme.code.keyword, "actual ")
|
||||
addStyle(AppTheme.code.keyword, "import ")
|
||||
addStyle(AppTheme.code.keyword, "package ")
|
||||
addStyle(AppTheme.code.value, "true")
|
||||
addStyle(AppTheme.code.value, "false")
|
||||
addStyle(AppTheme.code.value, Regex("[0-9]*"))
|
||||
addStyle(AppTheme.code.annotation, Regex("^@[a-zA-Z_]*"))
|
||||
addStyle(AppTheme.code.comment, Regex("^\\s*//.*"))
|
||||
val strFormatted = str.replace("\t", " ")
|
||||
append(strFormatted)
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, ":")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, "=")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, "\"")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, "[")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, "]")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, "{")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, "}")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, "(")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, ")")
|
||||
addStyle(AppTheme.code.punctuation, strFormatted, ",")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "fun ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "val ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "var ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "private ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "internal ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "for ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "expect ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "actual ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "import ")
|
||||
addStyle(AppTheme.code.keyword, strFormatted, "package ")
|
||||
addStyle(AppTheme.code.value, strFormatted, "true")
|
||||
addStyle(AppTheme.code.value, strFormatted, "false")
|
||||
addStyle(AppTheme.code.value, strFormatted, Regex("[0-9]*"))
|
||||
addStyle(AppTheme.code.annotation, strFormatted, Regex("^@[a-zA-Z_]*"))
|
||||
addStyle(AppTheme.code.comment, strFormatted, Regex("^\\s*//.*"))
|
||||
}
|
||||
}
|
||||
|
||||
private fun AnnotatedString.Builder.addStyle(style: SpanStyle, regexp: String) {
|
||||
addStyle(style, fromLiteral(regexp))
|
||||
private fun AnnotatedString.Builder.addStyle(style: SpanStyle, text: String, regexp: String) {
|
||||
addStyle(style, text, fromLiteral(regexp))
|
||||
}
|
||||
|
||||
private fun AnnotatedString.Builder.addStyle(style: SpanStyle, regexp: Regex) {
|
||||
for (result in regexp.findAll(toString())) {
|
||||
private fun AnnotatedString.Builder.addStyle(style: SpanStyle, text: String, regexp: Regex) {
|
||||
for (result in regexp.findAll(text)) {
|
||||
addStyle(style, result.range.first, result.range.last + 1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user