antlr4ts
Version:
ANTLR 4 runtime for JavaScript written in Typescript
174 lines • 5.02 kB
JavaScript
/*!
* 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
;