Skip to content

Commit bbc5fde

Browse files
committed
feature: provide way for custom serializer in styledstring methods
resolves #118
1 parent 38e8d9f commit bbc5fde

File tree

4 files changed

+45
-14
lines changed

4 files changed

+45
-14
lines changed

src/main/kotlin/dev/fruxz/stacked/Stacked.kt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package dev.fruxz.stacked
22

3+
import dev.fruxz.stacked.extension.OpenMiniMessageSerializer
34
import dev.fruxz.stacked.extension.api.StyledString
45
import dev.fruxz.stacked.extension.asStyledComponent
6+
import dev.fruxz.stacked.extension.miniMessageSerializer
57
import net.kyori.adventure.text.Component
6-
import net.kyori.adventure.text.ComponentBuilder
78
import net.kyori.adventure.text.ComponentLike
89
import net.kyori.adventure.text.TextComponent
910
import net.kyori.adventure.text.TextComponent.Builder
@@ -158,7 +159,11 @@ fun Builder.click(process: () -> ClickEvent?) = this.clickEvent(process())
158159
* @since 1.0
159160
*/
160161
@Stacked
161-
inline fun text(@StyledString content: String, builder: StackedBuilder.() -> Unit = { }) = content.asStyledComponent(builder)
162+
inline fun text(
163+
@StyledString content: String,
164+
serializer: OpenMiniMessageSerializer = miniMessageSerializer,
165+
builder: StackedBuilder.() -> Unit = { },
166+
) = content.asStyledComponent(serializer = serializer, builder = builder)
162167

163168
/**
164169
* This function uses the [component] to apply it to an new [TextComponent.Builder]
@@ -170,8 +175,10 @@ inline fun text(@StyledString content: String, builder: StackedBuilder.() -> Uni
170175
* @since 1.0
171176
*/
172177
@Stacked
173-
inline fun text(component: ComponentLike, builder: StackedBuilder.() -> Unit = { }) =
174-
StackedBuilder(Component.text().append(component)).apply(builder).build()
178+
inline fun text(
179+
component: ComponentLike,
180+
builder: StackedBuilder.() -> Unit = { },
181+
) = StackedBuilder(Component.text().append(component)).apply(builder).build()
175182

176183
/**
177184
* This function uses the [componentBuilder] and applies the [builder] process
@@ -183,8 +190,10 @@ inline fun text(component: ComponentLike, builder: StackedBuilder.() -> Unit = {
183190
* @since 1.0
184191
*/
185192
@Stacked
186-
inline fun text(componentBuilder: Builder, builder: StackedBuilder.() -> Unit = { }) =
187-
StackedBuilder(componentBuilder).apply(builder).build()
193+
inline fun text(
194+
componentBuilder: Builder,
195+
builder: StackedBuilder.() -> Unit = { },
196+
) = StackedBuilder(componentBuilder).apply(builder).build()
188197

189198
/**
190199
* This function uses a new [Component.empty] component and applies the [builder] process

src/main/kotlin/dev/fruxz/stacked/extension/Adventure.kt

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ var plainAdventureSerializer: ComponentSerializer<Component, TextComponent, Stri
3535
* @author Fruxz
3636
* @since 1.0
3737
*/
38-
var miniMessageSerializer: ComponentSerializer<Component, Component, String> =
38+
var miniMessageSerializer: OpenMiniMessageSerializer =
3939
MiniMessage.miniMessage()
4040

41-
var strictMiniMessageSerializer: ComponentSerializer<Component, Component, String> =
41+
var strictMiniMessageSerializer: OpenMiniMessageSerializer =
4242
MiniMessage.builder().strict(true).build()
4343

4444
/**
@@ -103,8 +103,11 @@ val Iterable<String>.asComponents: List<TextComponent>
103103
val ComponentLike.asStyledString: String
104104
get() = strictMiniMessageSerializer.serialize(asComponent())
105105

106-
fun ComponentLike.asStyledString(strict: Boolean = true) =
107-
strict.switch(asStyledString, miniMessageSerializer.serialize(asComponent()))
106+
fun ComponentLike.asStyledString(
107+
serializer: OpenMiniMessageSerializer = strictMiniMessageSerializer,
108+
strict: Boolean = true
109+
) =
110+
strict.switch(asStyledString, serializer.serialize(asComponent()))
108111

109112
/**
110113
* This computational value converts this [String] into a [TextComponent]
@@ -118,8 +121,12 @@ fun ComponentLike.asStyledString(strict: Boolean = true) =
118121
val String.asStyledComponent: TextComponent
119122
get() = Component.text().append(miniMessageSerializer.deserializeOr(this, Component.empty())!!).build()
120123

121-
inline fun String.asStyledComponent(builder: StackedBuilder.() -> Unit) =
122-
StackedBuilder(Component.text().append(asStyledComponent)).apply(builder).build()
124+
inline fun String.asStyledComponent(
125+
serializer: OpenMiniMessageSerializer = miniMessageSerializer,
126+
builder: StackedBuilder.() -> Unit = { },
127+
) = StackedBuilder(Component.text().append(serializer.deserializeOr(this, Component.empty())!!))
128+
.apply(builder)
129+
.build()
123130

124131
/**
125132
* This computational value converts this [String] into a [TextComponent]
@@ -133,6 +140,10 @@ inline fun String.asStyledComponent(builder: StackedBuilder.() -> Unit) =
133140
val String.asStyledComponents: List<TextComponent>
134141
get() = this.lines().asStyledComponents
135142

143+
fun String.asStyledComponents(
144+
serializer: OpenMiniMessageSerializer = miniMessageSerializer,
145+
): List<TextComponent> = this.lines().asStyledComponents(serializer)
146+
136147
/**
137148
* This computational value converts this [Iterable] into a [TextComponent]
138149
* list (every entry represents a line) by using the [MiniMessage], provided by the
@@ -143,4 +154,8 @@ val String.asStyledComponents: List<TextComponent>
143154
* @since 1.0
144155
*/
145156
val Iterable<String>.asStyledComponents: List<TextComponent>
146-
get() = map { it.asStyledComponent }
157+
get() = map { it.asStyledComponent }
158+
159+
fun Iterable<String>.asStyledComponents(
160+
serializer: OpenMiniMessageSerializer = miniMessageSerializer,
161+
): List<TextComponent> = map { it.asStyledComponent(serializer) }

src/main/kotlin/dev/fruxz/stacked/extension/Title.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ fun Title(
1919
@StyledString styledTitle: String,
2020
@StyledString styledSubtitle: String,
2121
times: AdventureTimes? = null,
22-
) = AdventureTitle.title(styledTitle.asStyledComponent, styledSubtitle.asStyledComponent, times)
22+
serializer: OpenMiniMessageSerializer = miniMessageSerializer,
23+
) = AdventureTitle.title(styledTitle.asStyledComponent(serializer = serializer), styledSubtitle.asStyledComponent(serializer = serializer), times)
2324

2425
fun Times(
2526
fadeIn: Duration,
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package dev.fruxz.stacked.extension
2+
3+
import net.kyori.adventure.text.Component
4+
import net.kyori.adventure.text.serializer.ComponentSerializer
5+
6+
typealias OpenMiniMessageSerializer = ComponentSerializer<Component, Component, String>

0 commit comments

Comments
 (0)