Index: quiver/lib/strings.dart |
diff --git a/quiver/lib/strings.dart b/quiver/lib/strings.dart |
deleted file mode 100644 |
index 013ba3a7cc29981794c3e9f2ae676ceeb2bc2baa..0000000000000000000000000000000000000000 |
--- a/quiver/lib/strings.dart |
+++ /dev/null |
@@ -1,252 +0,0 @@ |
-// Copyright 2013 Google Inc. All Rights Reserved. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
- |
-library quiver.strings; |
- |
-/** |
- * Returns [true] if [s] is either null, empty or is solely made of whitespace |
- * characters (as defined by [String.trim]). |
- */ |
-bool isBlank(String s) => s == null || s.trim().isEmpty; |
- |
-/** |
- * Returns [true] if [s] is either null or empty. |
- */ |
-bool isEmpty(String s) => s == null || s.isEmpty; |
- |
-/** |
- * Returns a string with characters from the given [s] in reverse order. |
- */ |
-String flip(String s) { |
- if (s == null || s == '') return s; |
- StringBuffer sb = new StringBuffer(); |
- var runes = s.runes; |
- for (int i = runes.length - 1; i >= 0; i--) { |
- sb.writeCharCode(runes.elementAt(i)); |
- } |
- return sb.toString(); |
-} |
- |
-/** |
- * If [s] is [null] returns empty string, otherwise returns [s] as is. |
- */ |
-String nullToEmpty(String s) => s == null ? '' : s; |
- |
-/** |
- * If [s] is an empty string returns [null], otherwise returns [s] as is. |
- */ |
-String emptyToNull(String s) => s == '' ? null : s; |
- |
-/** |
- * Concatenates [s] to itself a given number of [times]. Empty and null |
- * strings will always result in empty and null strings respectively no matter |
- * how many [times] they are [repeat]ed. |
- * |
- * If [times] is negative, returns the [flip]ped string repeated given number |
- * of [times]. |
- */ |
-String repeat(String s, int times) { |
- if (s == null || s == '') return s; |
- if (times < 0) { |
- return repeat(flip(s), -times); |
- } |
- StringBuffer sink = new StringBuffer(); |
- _repeat(sink, s, times); |
- return sink.toString(); |
-} |
- |
-/** |
- * Loops over [s] and returns traversed characters. Takes arbitrary [from] and |
- * [to] indices. Works as a substitute for [String.substring], except it never |
- * throws [RangeError]. Supports negative indices. Think of an index as a |
- * coordinate in an infinite in both directions vector filled with repeating |
- * string [s], whose 0-th coordinate coincides with the 0-th character in [s]. |
- * Then [loop] returns the sub-vector defined by the interval ([from], [to]). |
- * [from] is inclusive. [to] is exclusive. |
- * |
- * This method throws exceptions on [null] and empty strings. |
- * |
- * If [to] is omitted or is [null] the traversing ends at the end of the loop. |
- * |
- * If [to] < [from], traverses [s] in the opposite direction. |
- * |
- * For example: |
- * |
- * loop('Hello, World!', 7) == 'World!' |
- * loop('ab', 0, 6) == 'ababab' |
- * loop('test.txt', -3) == 'txt' |
- * loop('ldwor', -3, 2) == 'world' |
- */ |
-String loop(String s, int from, [int to]) { |
- if (s == null || s == '') { |
- throw new ArgumentError('Input string cannot be null or empty'); |
- } |
- if (to != null && to < from) { |
- return loop(flip(s), -from, -to); |
- } |
- int len = s.length; |
- int leftFrag = from >= 0 ? from ~/ len : ((from - len) ~/ len); |
- if (to == null) { |
- to = (leftFrag + 1) * len; |
- } |
- int rightFrag = to - 1 >= 0 ? to ~/ len : ((to - len) ~/ len); |
- int fragOffset = rightFrag - leftFrag - 1; |
- if (fragOffset == -1) { |
- return s.substring(from - leftFrag * len, to - rightFrag * len); |
- } |
- StringBuffer sink = new StringBuffer(s.substring(from - leftFrag * len)); |
- _repeat(sink, s, fragOffset); |
- sink.write(s.substring(0, to - rightFrag * len)); |
- return sink.toString(); |
-} |
- |
-void _repeat(StringBuffer sink, String s, int times) { |
- for (int i = 0; i < times; i++) { |
- sink.write(s); |
- } |
-} |
- |
-/** |
- * Returns a [String] of length [width] padded on the left with characters from |
- * [fill] if `input.length` is less than [width]. [fill] is repeated if |
- * neccessary to pad. |
- * |
- * Returns [input] if `input.length` is equal to or greater than width. [input] |
- * can be `null` and is treated as an empty string. |
- */ |
-@Deprecated('Will be removed in 0.22.0') |
-String padLeft(String input, int width, String fill) { |
- if (fill == null || fill.length == 0) { |
- throw new ArgumentError('fill cannot be null or empty'); |
- } |
- if (input == null || input.length == 0) return loop(fill, 0, width); |
- if (input.length >= width) return input; |
- return loop(fill, 0, width - input.length) + input; |
-} |
- |
-/** |
- * Returns a [String] of length [width] padded on the right with characters from |
- * [fill] if `input.length` is less than [width]. Characters are selected from |
- * [fill] starting at the end, so that the last character in [fill] is the last |
- * character in the result. [fill] is repeated if neccessary to pad. |
- * |
- * Returns [input] if `input.length` is equal to or greater than width. [input] |
- * can be `null` and is treated as an empty string. |
- */ |
-@Deprecated('Will be removed in 0.22.0') |
-String padRight(String input, int width, String fill) { |
- if (fill == null || fill.length == 0) { |
- throw new ArgumentError('fill cannot be null or empty'); |
- } |
- if (input == null || input.length == 0) { |
- return loop(fill, -width, 0); |
- } |
- if (input.length >= width) return input; |
- return input + loop(fill, input.length - width, 0); |
-} |
- |
-/** |
- * Removes leading whitespace from a string. |
- * |
- * Whitespace is defined to be the same as [String.trim]. |
- */ |
-@Deprecated('Will be removed in 0.22.0') |
-String trimLeft(String input) { |
- int i = 0; |
- for (var rune in input.runes) { |
- if (isWhitespace(rune)) { |
- i++; |
- } else { |
- break; |
- } |
- } |
- return input.substring(i); |
-} |
- |
-/** |
- * Removes trailing whitespace from a string. |
- * |
- * Whitespace is defined to be the same as [String.trim]. |
- */ |
-@Deprecated('Will be removed in 0.22.0') |
-String trimRight(String input) { |
- int i = 0; |
- int lastNonWhitespace = -1; |
- for (var rune in input.runes) { |
- i++; |
- if (!isWhitespace(rune)) { |
- lastNonWhitespace = i; |
- } |
- } |
- if (lastNonWhitespace == -1) return ''; |
- return input.substring(0, lastNonWhitespace); |
-} |
- |
-/** |
- * Returns `true` if [rune] represents a whitespace character. |
- * |
- * The definition of whitespace matches that used in [String.trim] which is |
- * based on Unicode 6.2. This maybe be a different set of characters than the |
- * environment's [RegExp] definition for whitespace, which is given by the |
- * ECMAScript standard: http://ecma-international.org/ecma-262/5.1/#sec-15.10 |
- */ |
-bool isWhitespace(int rune) => ((rune >= 0x0009 && rune <= 0x000D) || |
- rune == 0x0020 || |
- rune == 0x0085 || |
- rune == 0x00A0 || |
- rune == 0x1680 || |
- rune == 0x180E || |
- (rune >= 0x2000 && rune <= 0x200A) || |
- rune == 0x2028 || |
- rune == 0x2029 || |
- rune == 0x202F || |
- rune == 0x205F || |
- rune == 0x3000 || |
- rune == 0xFEFF); |
- |
-/** |
- * Returns a [String] of length [width] padded with the same number of |
- * characters on the left and right from [fill]. On the right, characters are |
- * selected from [fill] starting at the end so that the last character in [fill] |
- * is the last character in the result. [fill] is repeated if neccessary to pad. |
- * |
- * Returns [input] if `input.length` is equal to or greater than width. [input] |
- * can be `null` and is treated as an empty string. |
- * |
- * If there are an odd number of characters to pad, then the right will be |
- * padded with one more than the left. |
- */ |
-String center(String input, int width, String fill) { |
- if (fill == null || fill.length == 0) { |
- throw new ArgumentError('fill cannot be null or empty'); |
- } |
- if (input == null) input = ''; |
- var leftWidth = input.length + (width - input.length) ~/ 2; |
- return padRight(padLeft(input, leftWidth, fill), width, fill); |
-} |
- |
-/** |
- * Returns `true` if [a] and [b] are equal after being converted to lower case, |
- * or are both null. |
- */ |
-bool equalsIgnoreCase(String a, String b) => (a == null && b == null) || |
- (a != null && b != null && a.toLowerCase() == b.toLowerCase()); |
- |
-/** |
- * Compares [a] and [b] after converting to lower case. |
- * |
- * Both [a] and [b] must not be null. |
- */ |
-int compareIgnoreCase(String a, String b) => |
- a.toLowerCase().compareTo(b.toLowerCase()); |