174 lines
4.9 KiB
JavaScript
174 lines
4.9 KiB
JavaScript
"use strict";
|
|
/*!
|
|
* Copyright 2016 The ANTLR Project. All rights reserved.
|
|
* Licensed under the BSD-3-Clause license. See LICENSE file in the project root for license information.
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.toCharArray = exports.toMap = exports.equals = exports.join = exports.escapeWhitespace = void 0;
|
|
function escapeWhitespace(s, escapeSpaces) {
|
|
return escapeSpaces ? s.replace(/ /, "\u00B7") : s
|
|
.replace(/\t/, "\\t")
|
|
.replace(/\n/, "\\n")
|
|
.replace(/\r/, "\\r");
|
|
}
|
|
exports.escapeWhitespace = escapeWhitespace;
|
|
// Seriously: why isn't this built in to java? ugh!
|
|
function join(collection, separator) {
|
|
let buf = "";
|
|
let first = true;
|
|
for (let current of collection) {
|
|
if (first) {
|
|
first = false;
|
|
}
|
|
else {
|
|
buf += separator;
|
|
}
|
|
buf += current;
|
|
}
|
|
return buf;
|
|
}
|
|
exports.join = join;
|
|
function equals(x, y) {
|
|
if (x === y) {
|
|
return true;
|
|
}
|
|
if (x === undefined || y === undefined) {
|
|
return false;
|
|
}
|
|
return x.equals(y);
|
|
}
|
|
exports.equals = equals;
|
|
// export function numNonnull(data: any[]): number {
|
|
// let n: number = 0;
|
|
// if ( data == null ) return n;
|
|
// for (let o of data) {
|
|
// if ( o!=null ) n++;
|
|
// }
|
|
// return n;
|
|
// }
|
|
// export function removeAllElements<T>(data: Collection<T>, value: T): void {
|
|
// if ( data==null ) return;
|
|
// while ( data.contains(value) ) data.remove(value);
|
|
// }
|
|
// export function writeFile(@NotNull file: File, @NotNull content: Uint8Array): void {
|
|
// let fos: FileOutputStream = new FileOutputStream(file);
|
|
// try {
|
|
// fos.write(content);
|
|
// } finally {
|
|
// fos.close();
|
|
// }
|
|
// }
|
|
// export function writeFile(@NotNull fileName: string, @NotNull content: string): void {
|
|
// writeFile(fileName, content, null);
|
|
// }
|
|
// export function writeFile(@NotNull fileName: string, @NotNull content: string, @Nullable encoding: string): void {
|
|
// let f: File = new File(fileName);
|
|
// let fos: FileOutputStream = new FileOutputStream(f);
|
|
// let osw: OutputStreamWriter;
|
|
// if (encoding != null) {
|
|
// osw = new OutputStreamWriter(fos, encoding);
|
|
// }
|
|
// else {
|
|
// osw = new OutputStreamWriter(fos);
|
|
// }
|
|
// try {
|
|
// osw.write(content);
|
|
// }
|
|
// finally {
|
|
// osw.close();
|
|
// }
|
|
// }
|
|
// @NotNull
|
|
// export function readFile(@NotNull fileName: string): char[] {
|
|
// return readFile(fileName, null);
|
|
// }
|
|
// @NotNull
|
|
// export function readFile(@NotNull fileName: string, @Nullable encoding: string): char[] {
|
|
// let f: File = new File(fileName);
|
|
// let size: number = (int)f.length();
|
|
// let isr: InputStreamReader;
|
|
// let fis: FileInputStream = new FileInputStream(fileName);
|
|
// if ( encoding!=null ) {
|
|
// isr = new InputStreamReader(fis, encoding);
|
|
// }
|
|
// else {
|
|
// isr = new InputStreamReader(fis);
|
|
// }
|
|
// let data: char[] = null;
|
|
// try {
|
|
// data = new char[size];
|
|
// let n: number = isr.read(data);
|
|
// if (n < data.length) {
|
|
// data = Arrays.copyOf(data, n);
|
|
// }
|
|
// }
|
|
// finally {
|
|
// isr.close();
|
|
// }
|
|
// return data;
|
|
// }
|
|
// export function removeAll<T>(@NotNull predicate: List<T> list,@NotNull Predicate<? super T>): void {
|
|
// let j: number = 0;
|
|
// for (let i = 0; i < list.size; i++) {
|
|
// let item: T = list.get(i);
|
|
// if (!predicate.eval(item)) {
|
|
// if (j != i) {
|
|
// list.set(j, item);
|
|
// }
|
|
// j++;
|
|
// }
|
|
// }
|
|
// if (j < list.size) {
|
|
// list.subList(j, list.size).clear();
|
|
// }
|
|
// }
|
|
// export function removeAll<T>(@NotNull predicate: Iterable<T> iterable,@NotNull Predicate<? super T>): void {
|
|
// if (iterable instanceof List<?>) {
|
|
// removeAll((List<T>)iterable, predicate);
|
|
// return;
|
|
// }
|
|
// for (Iterator<T> iterator = iterable.iterator(); iterator.hasNext(); ) {
|
|
// let item: T = iterator.next();
|
|
// if (predicate.eval(item)) {
|
|
// iterator.remove();
|
|
// }
|
|
// }
|
|
// }
|
|
/** Convert array of strings to string→index map. Useful for
|
|
* converting rulenames to name→ruleindex map.
|
|
*/
|
|
function toMap(keys) {
|
|
let m = new Map();
|
|
for (let i = 0; i < keys.length; i++) {
|
|
m.set(keys[i], i);
|
|
}
|
|
return m;
|
|
}
|
|
exports.toMap = toMap;
|
|
function toCharArray(str) {
|
|
if (typeof str === "string") {
|
|
let result = new Uint16Array(str.length);
|
|
for (let i = 0; i < str.length; i++) {
|
|
result[i] = str.charCodeAt(i);
|
|
}
|
|
return result;
|
|
}
|
|
else {
|
|
return str.toCharArray();
|
|
}
|
|
}
|
|
exports.toCharArray = toCharArray;
|
|
// /**
|
|
// * @since 4.5
|
|
// */
|
|
// @NotNull
|
|
// export function toSet(@NotNull bits: BitSet): IntervalSet {
|
|
// let s: IntervalSet = new IntervalSet();
|
|
// let i: number = bits.nextSetBit(0);
|
|
// while ( i >= 0 ) {
|
|
// s.add(i);
|
|
// i = bits.nextSetBit(i+1);
|
|
// }
|
|
// return s;
|
|
// }
|
|
//# sourceMappingURL=Utils.js.map
|