Skip to content

Commit

Permalink
Merge pull request #99 from morrisseyai/feature/add-modifier-to-code-…
Browse files Browse the repository at this point in the history
…block-style

Add Modifier to CodeBlockStyle
  • Loading branch information
halilozercan authored Oct 13, 2022
2 parents e0470a9 + 06f0a75 commit 696fcfe
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,14 @@ import androidx.compose.ui.unit.sp
* Defines how [CodeBlock]s are rendered.
*
* @param textStyle The [TextStyle] to use for the block.
* @param background The [Color] of a code block, drawn behind the text.
* @param modifier The [Modifier] to use for the block.
* @param padding The amount of space between the edge of the text and the edge of the background.
* @param wordWrap Whether a code block breaks the lines or scrolls horizontally.
*/
@Immutable
public data class CodeBlockStyle(
val textStyle: TextStyle? = null,
// TODO Make background just a modifier instead?
val background: Color? = null,
val modifier: Modifier? = null,
val padding: TextUnit? = null,
val wordWrap: Boolean? = null
) {
Expand All @@ -40,13 +39,15 @@ public data class CodeBlockStyle(
private val DefaultCodeBlockTextStyle = TextStyle(
fontFamily = FontFamily.Monospace
)
internal val DefaultCodeBlockBackground: Color = Color.LightGray.copy(alpha = .5f)
internal val DefaultCodeBlockBackgroundColor: Color = Color.LightGray.copy(alpha = .5f)
private val DefaultCodeBlockModifier: Modifier =
Modifier.background(color = DefaultCodeBlockBackgroundColor)
private val DefaultCodeBlockPadding: TextUnit = 16.sp
private const val DefaultCodeWordWrap: Boolean = true

internal fun CodeBlockStyle.resolveDefaults() = CodeBlockStyle(
textStyle = textStyle ?: DefaultCodeBlockTextStyle,
background = background ?: DefaultCodeBlockBackground,
modifier = modifier ?: DefaultCodeBlockModifier,
padding = padding ?: DefaultCodeBlockPadding,
wordWrap = wordWrap ?: DefaultCodeWordWrap
)
Expand Down Expand Up @@ -78,17 +79,18 @@ internal fun CodeBlockStyle.resolveDefaults() = CodeBlockStyle(
) {
val codeBlockStyle = currentRichTextStyle.resolveDefaults().codeBlockStyle!!
val textStyle = currentTextStyle.merge(codeBlockStyle.textStyle)
val modifier = codeBlockStyle.modifier!!
val blockPadding = with(LocalDensity.current) {
codeBlockStyle.padding!!.toDp()
}
val resolvedWordWrap = wordWrap ?: codeBlockStyle.wordWrap!!

CodeBlockLayout(
wordWrap = resolvedWordWrap
) { modifier ->
) { layoutModifier ->
Box(
modifier = modifier
.background(color = codeBlockStyle.background!!)
modifier = layoutModifier
.then(modifier)
.padding(blockPadding)
) {
ProvideTextStyle(textStyle) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.BaselineShift
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.unit.sp
import com.halilibo.richtext.ui.DefaultCodeBlockBackground
import com.halilibo.richtext.ui.DefaultCodeBlockBackgroundColor
import com.halilibo.richtext.ui.string.RichTextString.Builder
import com.halilibo.richtext.ui.string.RichTextString.Format
import com.halilibo.richtext.ui.string.RichTextString.Format.Bold
Expand Down Expand Up @@ -206,7 +206,7 @@ public data class RichTextString internal constructor(
internal val DefaultStyle = SpanStyle(
fontFamily = FontFamily.Monospace,
fontWeight = FontWeight.Medium,
background = DefaultCodeBlockBackground
background = DefaultCodeBlockBackgroundColor
)

override fun getStyle(
Expand Down

0 comments on commit 696fcfe

Please sign in to comment.