Skip to content

Commit 7d6f1ab

Browse files
committed
Remove Optional<> return from parsers.
1 parent 9f12ef1 commit 7d6f1ab

19 files changed

+63
-68
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
}
66

77
group 'me.devoxin'
8-
version '3.0.6'
8+
version '4.0.0'
99

1010
repositories {
1111
maven {

src/main/kotlin/me/devoxin/flight/api/context/MessageContext.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,10 @@ class MessageContext(
137137
* The content of the message.
138138
*/
139139
fun sendPrivate(content: String) {
140-
author.openPrivateChannel().submit()
141-
.thenCompose { it.sendMessage(content).submit() }
142-
.thenCompose { it.channel.asPrivateChannel().delete().submit() }
140+
author.openPrivateChannel()
141+
.flatMap { it.sendMessage(content) }
142+
.flatMap { it.channel.asPrivateChannel().delete() }
143+
.queue()
143144
}
144145

145146
/**
@@ -153,9 +154,10 @@ class MessageContext(
153154
* @return The message that was sent.
154155
*/
155156
fun sendPrivate(message: MessageCreateData) {
156-
author.openPrivateChannel().submit()
157-
.thenCompose { it.sendMessage(message).submit() }
158-
.thenCompose { it.channel.asPrivateChannel().delete().submit() }
157+
author.openPrivateChannel()
158+
.flatMap { it.sendMessage(message) }
159+
.flatMap { it.channel.asPrivateChannel().delete() }
160+
.queue()
159161
}
160162

161163
private fun send0(messageOpts: (MessageCreateBuilder.() -> Unit)? = null, vararg files: FileUpload): RestAction<Message> {

src/main/kotlin/me/devoxin/flight/internal/arguments/ArgParser.kt

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,7 @@ class ArgParser(
8888
val parser = parsers[arg.type]
8989
?: throw ParserNotRegistered("No parsers registered for `${arg.type}`")
9090
val (argument, original) = getNextArgument(arg.greedy)
91-
val result = if (argument.isEmpty()) {
92-
Optional.empty()
93-
} else {
91+
val result = argument.takeIf { it.isNotEmpty() }?.let {
9492
try {
9593
parser.parse(ctx, argument)
9694
} catch (e: Throwable) {
@@ -101,9 +99,9 @@ class ArgParser(
10199
val canSubstitute = arg.isTentative || arg.isNullable || (arg.optional && argument.isEmpty())
102100
val (rangeCheck, rangeMessage) = checkRange(arg, result)
103101

104-
if (!result.isPresent || !rangeCheck) {
102+
if (result == null || !rangeCheck) {
105103
if (!canSubstitute) { // canSubstitute -> Whether we can pass null or the default value.
106-
val cause = if (result.isPresent && rangeCheck) null else IllegalArgumentException(rangeMessage)
104+
val cause = rangeMessage?.let(::IllegalArgumentException)
107105
// This should throw if the result is not present, and one of the following is not true:
108106
// - The arg is marked tentative (isTentative)
109107
// - The arg can use null (isNullable)
@@ -118,12 +116,11 @@ class ArgParser(
118116
}
119117
}
120118

121-
return result.takeIf { rangeCheck }?.orElse(null)
119+
return result.takeIf { rangeCheck }
122120
}
123121

124-
private fun checkRange(arg: Argument, parsed: Optional<out Any?>): Pair<Boolean, String?> {
122+
private fun <T : Any?> checkRange(arg: Argument, res: T): Pair<Boolean, String?> {
125123
arg.range ?: return true to null
126-
val res = parsed.orElse(null)
127124

128125
if (res !is Number && res !is String) {
129126
return false to null
@@ -138,21 +135,21 @@ class ArgParser(
138135
return when (double.size) {
139136
1 -> (dbl >= double[0]) to "`${arg.name}` must be at least ${double[0]} or bigger."
140137
2 -> (dbl >= double[0] && dbl <= double[1]) to "`${arg.name}` must be within range ${double.joinToString("-")}."
141-
else -> false to "<Invalid range for `${arg.name}:double`>"
138+
else -> false to "Invalid double range for `${arg.name}`"
142139
}
143140
} else if (long.isNotEmpty() && res is Number) {
144141
val lng = res.toLong()
145142
return when (long.size) {
146143
1 -> (lng >= long[0]) to "`${arg.name}` must be at least ${long[0]} or bigger."
147144
2 -> (lng >= long[0] && lng <= long[1]) to "`${arg.name}` must be within range ${long.joinToString("-")}."
148-
else -> false to "<Invalid range for `${arg.name}:long`>"
145+
else -> false to "Invalid long range for `${arg.name}`"
149146
}
150147
} else if (string.isNotEmpty() && res is String) {
151148
val lth = res.length
152149
return when (string.size) {
153150
1 -> (lth >= string[0]) to "`${arg.name}` must be at least ${string[0]} character${TextUtils.plural(string[0])} or longer."
154151
2 -> (lth >= string[0] && lth <= string[1]) to "`${arg.name}` must be within the range of ${string.joinToString("-")} characters."
155-
else -> false to "<Invalid range for `${arg.name}:string`>"
152+
else -> false to "Invalid string range for `${arg.name}`"
156153
}
157154
}
158155

src/main/kotlin/me/devoxin/flight/internal/parsers/BooleanParser.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import me.devoxin.flight.api.context.MessageContext
44
import java.util.*
55

66
class BooleanParser : Parser<Boolean> {
7-
override fun parse(ctx: MessageContext, param: String): Optional<Boolean> {
7+
override fun parse(ctx: MessageContext, param: String): Boolean? {
88
return when (param) {
9-
in trueExpr -> Optional.of(true)
10-
in falseExpr -> Optional.of(false)
11-
else -> Optional.empty()
9+
in trueExpr -> true
10+
in falseExpr -> false
11+
else -> null
1212
}
1313
}
1414

src/main/kotlin/me/devoxin/flight/internal/parsers/DoubleParser.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import me.devoxin.flight.api.context.MessageContext
44
import java.util.*
55

66
class DoubleParser : Parser<Double> {
7-
override fun parse(ctx: MessageContext, param: String): Optional<Double> {
8-
return Optional.ofNullable(param.toDoubleOrNull())
7+
override fun parse(ctx: MessageContext, param: String): Double? {
8+
return param.toDoubleOrNull()
99
}
1010
}

src/main/kotlin/me/devoxin/flight/internal/parsers/EmojiParser.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ import java.util.*
66

77
class EmojiParser : Parser<Emoji> {
88
// TODO: Support unicode emoji?
9-
override fun parse(ctx: MessageContext, param: String): Optional<Emoji> {
9+
override fun parse(ctx: MessageContext, param: String): Emoji? {
1010
val match = EMOJI_PATTERN.matcher(param)
1111

1212
if (match.find()) {
1313
val isAnimated = match.group(1) != null
1414
val name = match.group(2)
1515
val id = match.group(3).toLong()
1616

17-
return Optional.of(Emoji(name, id, isAnimated))
17+
return Emoji(name, id, isAnimated)
1818
}
1919

20-
return Optional.empty()
20+
return null
2121
}
2222

2323
companion object {

src/main/kotlin/me/devoxin/flight/internal/parsers/FloatParser.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import me.devoxin.flight.api.context.MessageContext
44
import java.util.*
55

66
class FloatParser : Parser<Float> {
7-
override fun parse(ctx: MessageContext, param: String): Optional<Float> {
8-
return Optional.ofNullable(param.toFloatOrNull())
7+
override fun parse(ctx: MessageContext, param: String): Float? {
8+
return param.toFloatOrNull()
99
}
1010
}

src/main/kotlin/me/devoxin/flight/internal/parsers/IntParser.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import me.devoxin.flight.api.context.MessageContext
44
import java.util.*
55

66
class IntParser : Parser<Int> {
7-
override fun parse(ctx: MessageContext, param: String): Optional<Int> {
8-
return Optional.ofNullable(param.toIntOrNull())
7+
override fun parse(ctx: MessageContext, param: String): Int? {
8+
return param.toIntOrNull()
99
}
1010
}

src/main/kotlin/me/devoxin/flight/internal/parsers/InviteParser.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ import me.devoxin.flight.api.arguments.types.Invite
55
import java.util.*
66

77
class InviteParser : Parser<Invite> {
8-
override fun parse(ctx: MessageContext, param: String): Optional<Invite> {
8+
override fun parse(ctx: MessageContext, param: String): Invite? {
99
val match = INVITE_PATTERN.matcher(param)
1010

1111
if (match.find()) {
1212
val code = match.group(1)
13-
return Optional.of(Invite(ctx.jda, match.group(), code))
13+
return Invite(ctx.jda, match.group(), code)
1414
}
1515

16-
return Optional.empty()
16+
return null
1717
}
1818

1919
companion object {
20-
val INVITE_PATTERN = "(?:https?://)?discord(?:(?:app)?\\.com/invite|\\.gg)/([a-zA-Z\\d]{1,16})".toPattern()
20+
val INVITE_PATTERN = "discord(?:(?:app)?\\.com/invite|\\.gg)/([a-zA-Z\\d]{1,16})".toPattern()
2121
}
2222
}

src/main/kotlin/me/devoxin/flight/internal/parsers/LongParser.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import me.devoxin.flight.api.context.MessageContext
44
import java.util.*
55

66
class LongParser : Parser<Long> {
7-
override fun parse(ctx: MessageContext, param: String): Optional<Long> {
8-
return Optional.ofNullable(param.toLongOrNull())
7+
override fun parse(ctx: MessageContext, param: String): Long? {
8+
return param.toLongOrNull()
99
}
1010
}

0 commit comments

Comments
 (0)