Minor: use EnumSet to hold options of regex.
This commit is contained in:
@@ -16,8 +16,9 @@
|
|||||||
|
|
||||||
package kotlin.text
|
package kotlin.text
|
||||||
|
|
||||||
import java.util.regex.Pattern
|
import java.util.*
|
||||||
import java.util.regex.Matcher
|
import java.util.regex.Matcher
|
||||||
|
import java.util.regex.Pattern
|
||||||
|
|
||||||
private interface FlagEnum {
|
private interface FlagEnum {
|
||||||
public val value: Int
|
public val value: Int
|
||||||
@@ -25,8 +26,15 @@ private interface FlagEnum {
|
|||||||
}
|
}
|
||||||
private fun Iterable<FlagEnum>.toInt(): Int =
|
private fun Iterable<FlagEnum>.toInt(): Int =
|
||||||
this.fold(0, { value, option -> value or option.value })
|
this.fold(0, { value, option -> value or option.value })
|
||||||
private fun <T: FlagEnum> fromInt(value: Int, allValues: Array<T>): Set<T> =
|
private inline fun <reified T> fromInt(value: Int): Set<T> where T : FlagEnum, T: Enum<T> =
|
||||||
allValues.filter({ value and it.mask == it.value }).toSet()
|
Collections.unmodifiableSet(EnumSet.allOf(T::class.java).apply {
|
||||||
|
// TODO: use removeAll with predicate
|
||||||
|
with (iterator()) {
|
||||||
|
while (hasNext())
|
||||||
|
if (next().let { value and it.mask != it.value })
|
||||||
|
remove()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides enumeration values to use to set regular expression options.
|
* Provides enumeration values to use to set regular expression options.
|
||||||
@@ -106,7 +114,7 @@ public class Regex internal constructor(private val nativePattern: Pattern) {
|
|||||||
get() = nativePattern.pattern()
|
get() = nativePattern.pattern()
|
||||||
|
|
||||||
/** The set of options that were used to create this regular expression. */
|
/** The set of options that were used to create this regular expression. */
|
||||||
public val options: Set<RegexOption> = fromInt(nativePattern.flags(), RegexOption.values())
|
public val options: Set<RegexOption> = fromInt(nativePattern.flags())
|
||||||
|
|
||||||
@Deprecated("To get the Matcher from java.util.regex.Pattern use toPattern to convert string to Pattern, or migrate to Regex API")
|
@Deprecated("To get the Matcher from java.util.regex.Pattern use toPattern to convert string to Pattern, or migrate to Regex API")
|
||||||
public fun matcher(input: CharSequence): Matcher = nativePattern.matcher(input)
|
public fun matcher(input: CharSequence): Matcher = nativePattern.matcher(input)
|
||||||
|
|||||||
Reference in New Issue
Block a user