Skip to content

Commit f08d1ba

Browse files
committed
feat: enhance number range functions to support generic types
1 parent 1123778 commit f08d1ba

File tree

1 file changed

+21
-15
lines changed
  • surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/dialog/builder

1 file changed

+21
-15
lines changed

surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/dialog/builder/DialogInputBuilder.kt

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,30 +49,31 @@ class DialogInputBuilder {
4949
simpleBoolean(key, SurfComponentBuilder(block), defaultValue)
5050
}
5151

52-
fun numberRange(
52+
fun <N> numberRange(
5353
key: String,
54-
range: ClosedFloatingPointRange<Float>,
55-
block: NumberRangeDialogInput.() -> Unit,
56-
): DialogInput {
54+
range: ClosedRange<N>,
55+
block: NumberRangeDialogInput<N>.() -> Unit,
56+
): DialogInput where N : Number, N : Comparable<N> {
5757
val input = NumberRangeDialogInput(key, range).apply(block).build()
5858
inputs.add(input)
5959
return input
6060
}
6161

62-
fun simpleNumberRange(
62+
fun <N> simpleNumberRange(
6363
key: String,
64-
range: ClosedFloatingPointRange<Float>,
64+
range: ClosedRange<N>,
6565
label: Component,
66-
) {
67-
val input = DialogInput.numberRange(key, label, range.start, range.endInclusive)
66+
) where N : Number, N : Comparable<N> {
67+
val input =
68+
DialogInput.numberRange(key, label, range.start.toFloat(), range.endInclusive.toFloat())
6869
inputs.add(input.build())
6970
}
7071

71-
fun simpleNumberRange(
72+
fun <N> simpleNumberRange(
7273
key: String,
73-
range: ClosedFloatingPointRange<Float>,
74+
range: ClosedRange<N>,
7475
block: SurfComponentBuilder.() -> Unit,
75-
) {
76+
) where N : Number, N : Comparable<N> {
7677
simpleNumberRange(key, range, SurfComponentBuilder(block))
7778
}
7879

@@ -190,10 +191,10 @@ class DialogInputBuilder {
190191
}
191192
}
192193

193-
class NumberRangeDialogInput(
194+
class NumberRangeDialogInput<N>(
194195
private val key: String,
195-
private val range: ClosedFloatingPointRange<Float>,
196-
) {
196+
private val range: ClosedRange<N>,
197+
) where N : Number, N : Comparable<N> {
197198
var label: Component? = null
198199
var initial: Float? = null
199200
var width: @Range(from = 1, to = 1024) Int? = null
@@ -227,7 +228,12 @@ class DialogInputBuilder {
227228
internal fun build(): DialogInput {
228229
val label = label
229230
require(label != null) { "Dialog input label must not be null" }
230-
val builder = DialogInput.numberRange(key, label, range.start, range.endInclusive)
231+
val builder = DialogInput.numberRange(
232+
key,
233+
label,
234+
range.start.toFloat(),
235+
range.endInclusive.toFloat()
236+
)
231237
with(builder) {
232238
initial?.let { initial(it) }
233239
width?.let { width(it) }

0 commit comments

Comments
 (0)