Skip to content

Commit 621f0ad

Browse files
Add String.Blank & fix removeDuplicateEmptyLines()/endWithNewLine()
1 parent b051398 commit 621f0ad

File tree

7 files changed

+54
-39
lines changed

7 files changed

+54
-39
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44

55
### Added
66

7+
- `String.Blank`
8+
79
### Changed
810

911
### Deprecated
1012

1113
### Fixed
1214

15+
- `removeDuplicateEmptyLines` move back to use `String`
16+
- `endWithNewLine` move back to use `String`
17+
1318
### Removed
1419

1520
### Updated

kotlin-stdlib/api/android/kotlin-stdlib.api

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,11 @@ public final class com/javiersc/kotlin/stdlib/BooleanKt {
144144
}
145145

146146
public final class com/javiersc/kotlin/stdlib/CharSequenceKt {
147-
public static final fun endWithNewLine (Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
148147
public static final fun isNotNullNorBlank (Ljava/lang/CharSequence;)Z
149148
public static final fun isNotNullNorEmpty (Ljava/lang/CharSequence;)Z
150149
public static final fun notContain (Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z
151150
public static final fun notContain (Ljava/lang/CharSequence;Lkotlin/text/Regex;)Z
152151
public static synthetic fun notContain$default (Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZILjava/lang/Object;)Z
153-
public static final fun removeDuplicateEmptyLines (Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
154152
}
155153

156154
public abstract class com/javiersc/kotlin/stdlib/Either {
@@ -249,11 +247,14 @@ public final class com/javiersc/kotlin/stdlib/ListKt {
249247
public final class com/javiersc/kotlin/stdlib/StringsKt {
250248
public static final fun capitalize (Ljava/lang/String;)Ljava/lang/String;
251249
public static final fun decapitalize (Ljava/lang/String;)Ljava/lang/String;
250+
public static final fun endWithNewLine (Ljava/lang/String;)Ljava/lang/String;
251+
public static final fun getBlank (Lkotlin/jvm/internal/StringCompanionObject;)Ljava/lang/String;
252252
public static final fun getEmpty (Lkotlin/jvm/internal/StringCompanionObject;)Ljava/lang/String;
253253
public static final fun remove (Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
254254
public static final fun remove (Ljava/lang/String;[Ljava/lang/String;Z)Ljava/lang/String;
255255
public static synthetic fun remove$default (Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Ljava/lang/String;
256256
public static synthetic fun remove$default (Ljava/lang/String;[Ljava/lang/String;ZILjava/lang/Object;)Ljava/lang/String;
257+
public static final fun removeDuplicateEmptyLines (Ljava/lang/String;)Ljava/lang/String;
257258
public static final fun removeIf (Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;)Ljava/lang/String;
258259
public static synthetic fun removeIf$default (Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
259260
public static final fun replace (Ljava/lang/String;[Lkotlin/Pair;)Ljava/lang/String;

kotlin-stdlib/api/jvm/kotlin-stdlib.api

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,11 @@ public final class com/javiersc/kotlin/stdlib/BooleanKt {
144144
}
145145

146146
public final class com/javiersc/kotlin/stdlib/CharSequenceKt {
147-
public static final fun endWithNewLine (Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
148147
public static final fun isNotNullNorBlank (Ljava/lang/CharSequence;)Z
149148
public static final fun isNotNullNorEmpty (Ljava/lang/CharSequence;)Z
150149
public static final fun notContain (Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Z
151150
public static final fun notContain (Ljava/lang/CharSequence;Lkotlin/text/Regex;)Z
152151
public static synthetic fun notContain$default (Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZILjava/lang/Object;)Z
153-
public static final fun removeDuplicateEmptyLines (Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
154152
}
155153

156154
public class com/javiersc/kotlin/stdlib/DirScope : com/javiersc/kotlin/stdlib/FileScope {
@@ -272,11 +270,14 @@ public final class com/javiersc/kotlin/stdlib/ListKt {
272270
public final class com/javiersc/kotlin/stdlib/StringsKt {
273271
public static final fun capitalize (Ljava/lang/String;)Ljava/lang/String;
274272
public static final fun decapitalize (Ljava/lang/String;)Ljava/lang/String;
273+
public static final fun endWithNewLine (Ljava/lang/String;)Ljava/lang/String;
274+
public static final fun getBlank (Lkotlin/jvm/internal/StringCompanionObject;)Ljava/lang/String;
275275
public static final fun getEmpty (Lkotlin/jvm/internal/StringCompanionObject;)Ljava/lang/String;
276276
public static final fun remove (Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
277277
public static final fun remove (Ljava/lang/String;[Ljava/lang/String;Z)Ljava/lang/String;
278278
public static synthetic fun remove$default (Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Ljava/lang/String;
279279
public static synthetic fun remove$default (Ljava/lang/String;[Ljava/lang/String;ZILjava/lang/Object;)Ljava/lang/String;
280+
public static final fun removeDuplicateEmptyLines (Ljava/lang/String;)Ljava/lang/String;
280281
public static final fun removeIf (Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;)Ljava/lang/String;
281282
public static synthetic fun removeIf$default (Ljava/lang/String;Ljava/lang/String;ZLkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
282283
public static final fun replace (Ljava/lang/String;[Lkotlin/Pair;)Ljava/lang/String;

kotlin-stdlib/common/main/kotlin/com/javiersc/kotlin/stdlib/CharSequence.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,3 @@ public inline fun CharSequence.notContain(
2020
): Boolean = !contains(other, ignoreCase)
2121

2222
public inline fun CharSequence.notContain(regex: Regex): Boolean = !contains(regex)
23-
24-
/** Remove all consecutive line breaks in a `CharSequence` */
25-
public fun CharSequence.removeDuplicateEmptyLines(): CharSequence =
26-
lines().removeDuplicateEmptyLines()
27-
28-
/** Add an empty line as last item if it is not empty */
29-
public fun CharSequence.endWithNewLine(): CharSequence =
30-
if (lines().lastOrNull().isNullOrBlank()) this else "$this\n"

kotlin-stdlib/common/main/kotlin/com/javiersc/kotlin/stdlib/Strings.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ public fun String.removeIf(
3333
public inline val String.Companion.Empty: String
3434
get() = ""
3535

36+
public inline val String.Companion.Blank: String
37+
get() = " "
38+
3639
/**
3740
* Returns a copy of this string having its first letter title-cased using the rules of the default
3841
* locale, or the original string if it's empty or already starts with a title case letter.
@@ -50,3 +53,10 @@ public inline fun String.capitalize(): String = replaceFirstChar {
5053
* locale, or the original string if it's empty or already starts with a lower case letter.
5154
*/
5255
public inline fun String.decapitalize(): String = replaceFirstChar { it.lowercase() }
56+
57+
/** Remove all consecutive line breaks in a `CharSequence` */
58+
public fun String.removeDuplicateEmptyLines(): String = lines().removeDuplicateEmptyLines()
59+
60+
/** Add an empty line as last item if it is not empty */
61+
public fun String.endWithNewLine(): String =
62+
if (lines().lastOrNull().isNullOrBlank()) this else "$this\n"

kotlin-stdlib/common/test/kotlin/com/javiersc/kotlin/stdlib/CharSequenceTest.kt

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -69,30 +69,4 @@ internal class CharSequenceTest {
6969
assertFalse { "Hello World 1".notContain(regex) }
7070
assertTrue { "Hello World".notContain(regex) }
7171
}
72-
73-
@Test
74-
fun string_remove_duplicate_empty_lines() {
75-
assertTrue { "a\nb\n\n\nc\n".removeDuplicateEmptyLines() == "a\nb\n\nc\n" }
76-
assertTrue { "a\n\nb\n\n\nc\n".removeDuplicateEmptyLines() == "a\n\nb\n\nc\n" }
77-
assertTrue { "a\n\nb\n\n\nc\n\n".removeDuplicateEmptyLines() == "a\n\nb\n\nc\n" }
78-
assertTrue { "a\n\n\n\n\nb\n\n".removeDuplicateEmptyLines() == "a\n\nb\n" }
79-
}
80-
81-
@Test
82-
fun string_end_with_new_line() {
83-
assertTrue { "a".endWithNewLine() == "a\n" }
84-
assertTrue { "a\n".endWithNewLine() == "a\n" }
85-
assertTrue { "".endWithNewLine() == "" }
86-
assertTrue { "a\nb".endWithNewLine() == "a\nb\n" }
87-
assertTrue { "".endWithNewLine() == "" }
88-
assertTrue { "\n".endWithNewLine() == "\n" }
89-
90-
val helloWorld =
91-
"""
92-
|Hello World
93-
|
94-
"""
95-
96-
assertTrue { helloWorld.trimMargin().endWithNewLine() == helloWorld.trimMargin() }
97-
}
9872
}

kotlin-stdlib/common/test/kotlin/com/javiersc/kotlin/stdlib/StringsTest.kt

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,38 @@ internal class StringsTest {
4242

4343
@Test
4444
fun empty_string() {
45-
assertTrue { String.Empty == "" }
45+
assertTrue { String.Empty.isEmpty() }
46+
}
47+
48+
@Test
49+
fun blank_string() {
50+
assertTrue { String.Empty.isBlank() }
51+
assertTrue { String.Blank.isBlank() && !String.Blank.isEmpty() }
52+
}
53+
54+
@Test
55+
fun string_remove_duplicate_empty_lines() {
56+
assertTrue { "a\nb\n\n\nc\n".removeDuplicateEmptyLines() == "a\nb\n\nc\n" }
57+
assertTrue { "a\n\nb\n\n\nc\n".removeDuplicateEmptyLines() == "a\n\nb\n\nc\n" }
58+
assertTrue { "a\n\nb\n\n\nc\n\n".removeDuplicateEmptyLines() == "a\n\nb\n\nc\n" }
59+
assertTrue { "a\n\n\n\n\nb\n\n".removeDuplicateEmptyLines() == "a\n\nb\n" }
60+
}
61+
62+
@Test
63+
fun string_end_with_new_line() {
64+
assertTrue { "a".endWithNewLine() == "a\n" }
65+
assertTrue { "a\n".endWithNewLine() == "a\n" }
66+
assertTrue { "".endWithNewLine() == "" }
67+
assertTrue { "a\nb".endWithNewLine() == "a\nb\n" }
68+
assertTrue { "".endWithNewLine() == "" }
69+
assertTrue { "\n".endWithNewLine() == "\n" }
70+
71+
val helloWorld =
72+
"""
73+
|Hello World
74+
|
75+
"""
76+
77+
assertTrue { helloWorld.trimMargin().endWithNewLine() == helloWorld.trimMargin() }
4678
}
4779
}

0 commit comments

Comments
 (0)