Simplify regexp engine init. (#1302)
This commit is contained in:
@@ -33,31 +33,13 @@
|
|||||||
|
|
||||||
package kotlin.text.regex
|
package kotlin.text.regex
|
||||||
|
|
||||||
/**
|
private object unixLT : AbstractLineTerminator() {
|
||||||
* Line terminator factory
|
|
||||||
*/
|
|
||||||
internal abstract class AbstractLineTerminator {
|
|
||||||
|
|
||||||
/** Checks if the single character is a line terminator or not. */
|
|
||||||
open fun isLineTerminator(char: Char): Boolean = isLineTerminator(char.toInt())
|
|
||||||
/** Checks if the codepoint is a line terminator or not */
|
|
||||||
abstract fun isLineTerminator(codepoint: Int): Boolean
|
|
||||||
/** Checks if the pair of symbols is a line terminator (e.g. for \r\n case) */
|
|
||||||
abstract fun isLineTerminatorPair(char1: Char, char2: Char): Boolean
|
|
||||||
/** Checks if a [checked] character is after a line terminator using the [previous] character.*/
|
|
||||||
abstract fun isAfterLineTerminator(previous: Char, checked: Char): Boolean
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
val unixLT: AbstractLineTerminator by lazy {
|
|
||||||
object : AbstractLineTerminator() {
|
|
||||||
override fun isLineTerminator(codepoint: Int): Boolean = (codepoint == '\n'.toInt())
|
override fun isLineTerminator(codepoint: Int): Boolean = (codepoint == '\n'.toInt())
|
||||||
override fun isLineTerminatorPair(char1: Char, char2: Char): Boolean = false
|
override fun isLineTerminatorPair(char1: Char, char2: Char): Boolean = false
|
||||||
override fun isAfterLineTerminator(previous: Char, checked: Char): Boolean = (previous == '\n')
|
override fun isAfterLineTerminator(previous: Char, checked: Char): Boolean = (previous == '\n')
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
val unicodeLT: AbstractLineTerminator by lazy {
|
private object unicodeLT : AbstractLineTerminator() {
|
||||||
object : AbstractLineTerminator() {
|
|
||||||
override fun isLineTerminatorPair(char1: Char, char2: Char): Boolean {
|
override fun isLineTerminatorPair(char1: Char, char2: Char): Boolean {
|
||||||
return char1 == '\r' && char2 == '\n'
|
return char1 == '\r' && char2 == '\n'
|
||||||
}
|
}
|
||||||
@@ -74,8 +56,25 @@ internal abstract class AbstractLineTerminator {
|
|||||||
|| previous == '\r' && checked != '\n'
|
|| previous == '\r' && checked != '\n'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Line terminator factory
|
||||||
|
*/
|
||||||
|
internal abstract class AbstractLineTerminator {
|
||||||
|
|
||||||
|
/** Checks if the single character is a line terminator or not. */
|
||||||
|
open fun isLineTerminator(char: Char): Boolean = isLineTerminator(char.toInt())
|
||||||
|
|
||||||
|
/** Checks if the codepoint is a line terminator or not */
|
||||||
|
abstract fun isLineTerminator(codepoint: Int): Boolean
|
||||||
|
|
||||||
|
/** Checks if the pair of symbols is a line terminator (e.g. for \r\n case) */
|
||||||
|
abstract fun isLineTerminatorPair(char1: Char, char2: Char): Boolean
|
||||||
|
|
||||||
|
/** Checks if a [checked] character is after a line terminator using the [previous] character.*/
|
||||||
|
abstract fun isAfterLineTerminator(previous: Char, checked: Char): Boolean
|
||||||
|
|
||||||
|
companion object {
|
||||||
fun getInstance(flag: Int): AbstractLineTerminator {
|
fun getInstance(flag: Int): AbstractLineTerminator {
|
||||||
if (flag and Pattern.UNIX_LINES != 0) {
|
if (flag and Pattern.UNIX_LINES != 0) {
|
||||||
return unixLT
|
return unixLT
|
||||||
|
|||||||
Reference in New Issue
Block a user