From 28c8b06344e2882d632003e5a049ae942624ca8d Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 21:21:17 +0400 Subject: [PATCH 1/7] Added String.split(Char) --- libraries/stdlib/src/kotlin/Strings.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/stdlib/src/kotlin/Strings.kt b/libraries/stdlib/src/kotlin/Strings.kt index e1519a90928..65320efde8a 100644 --- a/libraries/stdlib/src/kotlin/Strings.kt +++ b/libraries/stdlib/src/kotlin/Strings.kt @@ -60,6 +60,8 @@ public inline fun String.format(format : String, vararg args : Any?) : String = public inline fun String.split(regex : String) : Array = (this as java.lang.String).split(regex) as Array +public inline fun String.split(ch : Char) : Array = (this as java.lang.String).split(java.util.regex.Pattern.quote(ch.toString())) as Array + public inline fun String.substring(beginIndex : Int) : String = (this as java.lang.String).substring(beginIndex).sure() public inline fun String.substring(beginIndex : Int, endIndex : Int) : String = (this as java.lang.String).substring(beginIndex, endIndex).sure() From a2f27496aa7e451d7dac20e3424426b912f707fa Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 21:29:30 +0400 Subject: [PATCH 2/7] Added test for String.split(Char) --- libraries/stdlib/test/StringTest.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libraries/stdlib/test/StringTest.kt b/libraries/stdlib/test/StringTest.kt index cf11b34702a..f12c7a89185 100644 --- a/libraries/stdlib/test/StringTest.kt +++ b/libraries/stdlib/test/StringTest.kt @@ -46,4 +46,18 @@ class StringTest() : TestCase() { assertEquals(77.toLong(), "77".toLong()) } + fun testSplitByChar() { + val s = "ab\n[|^$&\\]^cd" + var list = s.split('b'); + assertEquals(2, list.size) + assertEquals("a", list[0]) + assertEquals("\n[|^$&\\]^cd", list[1]) + list = s.split('^') + assertEquals(3, list.size) + assertEquals("cd", list[2]) + list = s.split('.') + assertEquals(1, list.size) + assertEquals(s, list[0]) + } + } From a947d392d4a0b7e1d6b4bc9ea20746ff16c574b3 Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 22:01:16 +0400 Subject: [PATCH 3/7] Added startsWith(Char) and endsWith(Char) for String --- libraries/stdlib/src/kotlin/Strings.kt | 4 ++++ libraries/stdlib/test/StringTest.kt | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/libraries/stdlib/src/kotlin/Strings.kt b/libraries/stdlib/src/kotlin/Strings.kt index 65320efde8a..422d023b5bd 100644 --- a/libraries/stdlib/src/kotlin/Strings.kt +++ b/libraries/stdlib/src/kotlin/Strings.kt @@ -70,10 +70,14 @@ public inline fun String.startsWith(prefix: String) : Boolean = (this as java.la public inline fun String.startsWith(prefix: String, toffset: Int) : Boolean = (this as java.lang.String).startsWith(prefix, toffset) +public inline fun String.startsWith(ch: Char) : Boolean = (this as java.lang.String).startsWith(ch.toString()) + public inline fun String.contains(seq: CharSequence) : Boolean = (this as java.lang.String).contains(seq) public inline fun String.endsWith(suffix: String) : Boolean = (this as java.lang.String).endsWith(suffix) +public inline fun String.endsWith(ch: Char) : Boolean = (this as java.lang.String).endsWith(ch.toString()) + inline val String.size : Int get() = length() diff --git a/libraries/stdlib/test/StringTest.kt b/libraries/stdlib/test/StringTest.kt index f12c7a89185..33741d058f9 100644 --- a/libraries/stdlib/test/StringTest.kt +++ b/libraries/stdlib/test/StringTest.kt @@ -60,4 +60,16 @@ class StringTest() : TestCase() { assertEquals(s, list[0]) } + fun testStartsWithChar() { + assertTrue("abcd".startsWith('a')) + assertFalse("abcd".startsWith('b')) + assertFalse("".startsWith('a')) + } + + fun testEndsWithChar() { + assertTrue("abcd".endsWith('d')) + assertFalse("abcd".endsWith('b')) + assertFalse("".endsWith('a')) + } + } From 289d20229ab4d5e384f59fcd98fe0f264dc2b986 Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 21:21:17 +0400 Subject: [PATCH 4/7] Added String.split(Char) --- libraries/stdlib/src/kotlin/Strings.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/stdlib/src/kotlin/Strings.kt b/libraries/stdlib/src/kotlin/Strings.kt index 81945388444..8afc56cb5fc 100644 --- a/libraries/stdlib/src/kotlin/Strings.kt +++ b/libraries/stdlib/src/kotlin/Strings.kt @@ -60,6 +60,8 @@ public inline fun String.format(format : String, vararg args : Any?) : String = public inline fun String.split(regex : String) : Array = (this as java.lang.String).split(regex) as Array +public inline fun String.split(ch : Char) : Array = (this as java.lang.String).split(java.util.regex.Pattern.quote(ch.toString())) as Array + public inline fun String.substring(beginIndex : Int) : String = (this as java.lang.String).substring(beginIndex).sure() public inline fun String.substring(beginIndex : Int, endIndex : Int) : String = (this as java.lang.String).substring(beginIndex, endIndex).sure() From 1348497188ad686be95cba21e4b5df6f779e1900 Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 21:29:30 +0400 Subject: [PATCH 5/7] Added test for String.split(Char) --- libraries/stdlib/test/StringTest.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libraries/stdlib/test/StringTest.kt b/libraries/stdlib/test/StringTest.kt index 157a61a2851..2a3923c7673 100644 --- a/libraries/stdlib/test/StringTest.kt +++ b/libraries/stdlib/test/StringTest.kt @@ -52,4 +52,18 @@ class StringTest { assertEquals(3, whitespaceCount) } + test fun testSplitByChar() { + val s = "ab\n[|^$&\\]^cd" + var list = s.split('b'); + assertEquals(2, list.size) + assertEquals("a", list[0]) + assertEquals("\n[|^$&\\]^cd", list[1]) + list = s.split('^') + assertEquals(3, list.size) + assertEquals("cd", list[2]) + list = s.split('.') + assertEquals(1, list.size) + assertEquals(s, list[0]) + } + } From 54368014872d4d39ab1a20643a31a47279175167 Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 22:01:16 +0400 Subject: [PATCH 6/7] Added startsWith(Char) and endsWith(Char) for String --- libraries/stdlib/src/kotlin/Strings.kt | 4 ++++ libraries/stdlib/test/StringTest.kt | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/libraries/stdlib/src/kotlin/Strings.kt b/libraries/stdlib/src/kotlin/Strings.kt index 8afc56cb5fc..cf42a95fd64 100644 --- a/libraries/stdlib/src/kotlin/Strings.kt +++ b/libraries/stdlib/src/kotlin/Strings.kt @@ -70,10 +70,14 @@ public inline fun String.startsWith(prefix: String) : Boolean = (this as java.la public inline fun String.startsWith(prefix: String, toffset: Int) : Boolean = (this as java.lang.String).startsWith(prefix, toffset) +public inline fun String.startsWith(ch: Char) : Boolean = (this as java.lang.String).startsWith(ch.toString()) + public inline fun String.contains(seq: CharSequence) : Boolean = (this as java.lang.String).contains(seq) public inline fun String.endsWith(suffix: String) : Boolean = (this as java.lang.String).endsWith(suffix) +public inline fun String.endsWith(ch: Char) : Boolean = (this as java.lang.String).endsWith(ch.toString()) + inline val String.size : Int get() = length() diff --git a/libraries/stdlib/test/StringTest.kt b/libraries/stdlib/test/StringTest.kt index 2a3923c7673..34bd43da51a 100644 --- a/libraries/stdlib/test/StringTest.kt +++ b/libraries/stdlib/test/StringTest.kt @@ -66,4 +66,16 @@ class StringTest { assertEquals(s, list[0]) } + fun testStartsWithChar() { + assertTrue("abcd".startsWith('a')) + assertFalse("abcd".startsWith('b')) + assertFalse("".startsWith('a')) + } + + fun testEndsWithChar() { + assertTrue("abcd".endsWith('d')) + assertFalse("abcd".endsWith('b')) + assertFalse("".endsWith('a')) + } + } From ebf261e92d779f93eacdeb99c1b91cea26e67b4e Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 20 Apr 2012 21:18:43 +0400 Subject: [PATCH 7/7] Added test annotations --- libraries/stdlib/test/StringTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/stdlib/test/StringTest.kt b/libraries/stdlib/test/StringTest.kt index 34bd43da51a..f2db543a24c 100644 --- a/libraries/stdlib/test/StringTest.kt +++ b/libraries/stdlib/test/StringTest.kt @@ -66,13 +66,13 @@ class StringTest { assertEquals(s, list[0]) } - fun testStartsWithChar() { + test fun testStartsWithChar() { assertTrue("abcd".startsWith('a')) assertFalse("abcd".startsWith('b')) assertFalse("".startsWith('a')) } - fun testEndsWithChar() { + test fun testEndsWithChar() { assertTrue("abcd".endsWith('d')) assertFalse("abcd".endsWith('b')) assertFalse("".endsWith('a'))