youtube_explode/lib/src/extensions/helpers_extension.dart

66 lines
1.6 KiB
Dart
Raw Normal View History

2020-04-18 23:22:13 +02:00
import '../reverse_engineering/cipher/cipher_operations.dart';
2020-02-20 19:50:10 +01:00
/// Utility for Strings.
extension StringUtility on String {
2020-06-03 13:18:37 +02:00
/// Returns null if this string is whitespace.
String get nullIfWhitespace => trim().isEmpty ? null : this;
2020-02-20 19:50:10 +01:00
/// Returns true if the string is null or empty.
bool get isNullOrWhiteSpace {
if (this == null) {
return true;
}
if (trim().isEmpty) {
return true;
}
return false;
}
2020-06-03 13:18:37 +02:00
/// Returns null if this string is a whitespace.
String substringUntil(String separator) => substring(0, indexOf(separator));
///
String substringAfter(String separator) =>
substring(indexOf(separator) + length);
2020-02-20 19:50:10 +01:00
static final _exp = RegExp(r'\D');
/// Strips out all non digit characters.
2020-06-03 13:18:37 +02:00
String stripNonDigits() => replaceAll(_exp, '');
2020-02-20 19:50:10 +01:00
}
/// List decipher utility.
2020-06-03 13:18:37 +02:00
extension ListDecipher on Iterable<CipherOperation> {
/// Apply every CipherOperation on the [signature]
2020-02-20 19:50:10 +01:00
String decipher(String signature) {
for (var operation in this) {
signature = operation.decipher(signature);
}
return signature;
}
}
/// List Utility.
extension ListFirst<E> on List<E> {
/// Returns the first element of a list or null if empty.
E get firstOrNull {
if (length == 0) {
return null;
}
return first;
}
}
2020-06-03 13:18:37 +02:00
/// Uri utility
extension UriUtility on Uri {
/// Returns a new Uri with the new query parameters set.
Uri setQueryParam(String key, String value) {
var query = Map<String, String>.from(queryParameters);
query[key] = value;
return replace(queryParameters: query);
}
}