Skip to content

Commit d445f73

Browse files
committed
feat: use lexicographic string comparisons
1 parent d4f2058 commit d445f73

3 files changed

Lines changed: 31 additions & 19 deletions

File tree

lib/src/nullable_string_extensions.dart

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ extension MiscExtensionsNullable on String? {
8282
if (this.isBlank) {
8383
return '';
8484
}
85-
if (s.isBlank) {
85+
if (s == null || s.isBlank) {
8686
return this!;
8787
}
88-
return this!.replaceAll(s!, '');
88+
return this!.replaceAll(s, '');
8989
}
9090

9191
/// Returns the average read time duration of the given `String` in seconds.
@@ -1894,14 +1894,20 @@ extension MiscExtensionsNullable on String? {
18941894
/// String s = "esentis".wrap("AA", after: "BB"); // returns "AAesentisBB";
18951895
/// ```
18961896
String wrap(String? before, {String? after}) {
1897-
before = before.ifBlank("");
1898-
if (after.isBlank) {
1899-
if (before.isCloseWrapChar()) {
1900-
before = before.getOppositeChar();
1897+
var resolvedBefore = before?.ifBlank("") ?? "";
1898+
var resolvedAfter = after?.ifBlank("");
1899+
1900+
if (resolvedAfter == null) {
1901+
if (resolvedBefore.isEmpty) {
1902+
return "${this ?? ''}";
1903+
}
1904+
if (resolvedBefore.isCloseWrapChar()) {
1905+
resolvedBefore = resolvedBefore.getOppositeChar() ?? resolvedBefore;
19011906
}
1902-
after = before.getOppositeChar();
1907+
resolvedAfter = resolvedBefore.getOppositeChar();
19031908
}
1904-
return "$before${this as String}${after.ifBlank(before)}";
1909+
1910+
return "$resolvedBefore${this ?? ''}${resolvedAfter}";
19051911
}
19061912

19071913
/// Returns the opposite wrap char of the `String` if possible, otherwise returns the same `String`.

lib/src/string_extensions.dart

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ extension MiscExtensionsNonNullable on String {
8181
if (this.isBlank) {
8282
return '';
8383
}
84-
if (s?.isBlank == true) {
84+
if (s == null || s.isBlank) {
8585
return this;
8686
}
87-
return this.replaceAll(s!, '');
87+
return this.replaceAll(s, '');
8888
}
8989

9090
/// Returns the average read time duration of the given `String` in seconds.
@@ -1804,14 +1804,20 @@ extension MiscExtensionsNonNullable on String {
18041804
/// String s = "esentis".wrap("AA", after: "BB"); // returns "AAesentisBB";
18051805
/// ```
18061806
String wrap(String? before, {String? after}) {
1807-
before = before?.ifBlank("");
1808-
if (after?.isBlank == true) {
1809-
if (before?.isCloseWrapChar() == true) {
1810-
before = before?.getOppositeChar();
1807+
var resolvedBefore = before?.ifBlank("") ?? "";
1808+
var resolvedAfter = after?.ifBlank("");
1809+
1810+
if (resolvedAfter == null) {
1811+
if (resolvedBefore.isEmpty) {
1812+
return "$this";
1813+
}
1814+
if (resolvedBefore.isCloseWrapChar()) {
1815+
resolvedBefore = resolvedBefore.getOppositeChar();
18111816
}
1812-
after = before?.getOppositeChar();
1817+
resolvedAfter = resolvedBefore.getOppositeChar();
18131818
}
1814-
return "$before${this}${after?.ifBlank(before ?? "") ?? before}";
1819+
1820+
return "$resolvedBefore${this}${resolvedAfter}";
18151821
}
18161822

18171823
/// Returns the opposite wrap char of the `String` if possible, otherwise returns the same `String`.

test/string_extensions_test.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -701,13 +701,13 @@ void main() {
701701
String? string1 = 'employee';
702702
expect(string1.isUrl, false);
703703

704-
String? string2 = '1111111.com';
704+
String? string2 = 'https://1111111.com';
705705
expect(string2.isUrl, true);
706706

707-
String? string3 = 'http://8recommmmmmendation';
707+
String? string3 = 'http://';
708708
expect(string3.isUrl, false);
709709

710-
String? string4 = 'www.google.com';
710+
String? string4 = 'https://www.google.com';
711711
expect(string4.isUrl, true);
712712

713713
String? string5 = 'ftp://www.google.com';

0 commit comments

Comments
 (0)