blob: f523e8f58456d2352e7953a3f4e4e6179cc4d9fc [file] [log] [blame]
library java.engine;
import 'java_core.dart';
/**
* A predicate is a one-argument function that returns a boolean value.
*/
typedef bool Predicate<E>(E argument);
class StringUtilities {
static const String EMPTY = '';
static const List<String> EMPTY_ARRAY = const <String>[];
static String intern(String s) => s;
static bool isTagName(String s) {
if (s == null || s.length == 0) {
return false;
}
int sz = s.length;
for (int i = 0; i < sz; i++) {
int c = s.codeUnitAt(i);
if (!Character.isLetter(c)) {
if (i == 0) {
return false;
}
if (!Character.isDigit(c) && c != 0x2D) {
return false;
}
}
}
return true;
}
static bool isEmpty(String s) {
return s == null || s.isEmpty;
}
static String substringBefore(String str, String separator) {
if (str == null || str.isEmpty) {
return str;
}
int pos = str.indexOf(separator);
if (pos < 0) {
return str;
}
return str.substring(0, pos);
}
static endsWithChar(String str, int c) {
int length = str.length;
return length > 0 && str.codeUnitAt(length - 1) == c;
}
static endsWith3(String str, int c1, int c2, int c3) {
var length = str.length;
return length >= 3 && str.codeUnitAt(length - 3) == c1 && str.codeUnitAt(
length - 2) == c2 && str.codeUnitAt(length - 1) == c3;
}
static startsWithChar(String str, int c) {
return str.length != 0 && str.codeUnitAt(0) == c;
}
static startsWith2(String str, int start, int c1, int c2) {
return str.length - start >= 2 && str.codeUnitAt(start) == c1 &&
str.codeUnitAt(start + 1) == c2;
}
static startsWith3(String str, int start, int c1, int c2, int c3) {
return str.length - start >= 3 && str.codeUnitAt(start) == c1 &&
str.codeUnitAt(start + 1) == c2 && str.codeUnitAt(start + 2) == c3;
}
static startsWith4(String str, int start, int c1, int c2, int c3, int c4) {
return str.length - start >= 4 && str.codeUnitAt(start) == c1 &&
str.codeUnitAt(start + 1) == c2 && str.codeUnitAt(start + 2) == c3 &&
str.codeUnitAt(start + 3) == c4;
}
static startsWith5(String str, int start, int c1, int c2, int c3, int c4, int
c5) {
return str.length - start >= 5 && str.codeUnitAt(start) == c1 &&
str.codeUnitAt(start + 1) == c2 && str.codeUnitAt(start + 2) == c3 &&
str.codeUnitAt(start + 3) == c4 && str.codeUnitAt(start + 4) == c5;
}
static startsWith6(String str, int start, int c1, int c2, int c3, int c4, int
c5, int c6) {
return str.length - start >= 6 && str.codeUnitAt(start) == c1 &&
str.codeUnitAt(start + 1) == c2 && str.codeUnitAt(start + 2) == c3 &&
str.codeUnitAt(start + 3) == c4 && str.codeUnitAt(start + 4) == c5 &&
str.codeUnitAt(start + 5) == c6;
}
static int indexOf1(String str, int start, int c) {
int index = start;
int last = str.length;
while (index < last) {
if (str.codeUnitAt(index) == c) {
return index;
}
index++;
}
return -1;
}
static int indexOf2(String str, int start, int c1, int c2) {
int index = start;
int last = str.length - 1;
while (index < last) {
if (str.codeUnitAt(index) == c1 && str.codeUnitAt(index + 1) == c2) {
return index;
}
index++;
}
return -1;
}
static int indexOf4(String string, int start, int c1, int c2, int c3, int c4)
{
int index = start;
int last = string.length - 3;
while (index < last) {
if (string.codeUnitAt(index) == c1 && string.codeUnitAt(index + 1) == c2
&& string.codeUnitAt(index + 2) == c3 && string.codeUnitAt(index + 3) == c4) {
return index;
}
index++;
}
return -1;
}
static int indexOf5(String str, int start, int c1, int c2, int c3, int c4, int
c5) {
int index = start;
int last = str.length - 4;
while (index < last) {
if (str.codeUnitAt(index) == c1 && str.codeUnitAt(index + 1) == c2 &&
str.codeUnitAt(index + 2) == c3 && str.codeUnitAt(index + 3) == c4 &&
str.codeUnitAt(index + 4) == c5) {
return index;
}
index++;
}
return -1;
}
static String substringBeforeChar(String str, int c) {
if (isEmpty(str)) {
return str;
}
int pos = indexOf1(str, 0, c);
if (pos < 0) {
return str;
}
return str.substring(0, pos);
}
/**
* Return the index of the first not letter/digit character in the [string]
* that is at or after the [startIndex]. Return the length of the [string] if
* all characters to the end are letters/digits.
*/
static int indexOfFirstNotLetterDigit(String string, int startIndex) {
int index = startIndex;
int last = string.length;
while (index < last) {
int c = string.codeUnitAt(index);
if (!Character.isLetterOrDigit(c)) {
return index;
}
index++;
}
return last;
}
}
class FileNameUtilities {
static String getExtension(String fileName) {
if (fileName == null) {
return "";
}
int index = fileName.lastIndexOf('.');
if (index >= 0) {
return fileName.substring(index + 1);
}
return "";
}
}
class ArrayUtils {
static List addAll(List target, List source) {
List result = new List.from(target);
result.addAll(source);
return result;
}
}
class ObjectUtilities {
static int combineHashCodes(int first, int second) => first * 31 + second;
}
class UUID {
static int __nextId = 0;
final String id;
UUID(this.id);
String toString() => id;
static UUID randomUUID() => new UUID((__nextId).toString());
}