antlr4-runtime
Version:
JavaScript runtime for ANTLR4
41 lines (35 loc) • 1.17 kB
JavaScript
/* Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.
* Use of this file is governed by the BSD 3-clause license that
* can be found in the LICENSE.txt file in the project root.
*/
import InputStream from './InputStream.js';
import CharStream from './CharStream.js';
const isNode =
typeof process !== "undefined" &&
process.versions != null &&
process.versions.node != null;
import fs from 'fs';
/**
* This is an InputStream that is loaded from a file all at once
* when you construct the object.
*/
export default class FileStream extends InputStream {
static fromPath(path, encoding, callback) {
if(!isNode)
throw new Error("FileStream is only available when running in Node!");
fs.readFile(path, encoding, function(err, data) {
let is = null;
if (data !== null) {
is = new CharStream(data, true);
}
callback(err, is);
});
}
constructor(fileName, encoding, decodeToUnicodeCodePoints) {
if(!isNode)
throw new Error("FileStream is only available when running in Node!");
const data = fs.readFileSync(fileName, encoding || "utf-8" );
super(data, decodeToUnicodeCodePoints);
this.fileName = fileName;
}
}