antlr4-runtime
Version:
JavaScript runtime for ANTLR4
68 lines (61 loc) • 2.05 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 CharStream from "./CharStream.js";
import FileStream from "./FileStream.js";
/**
* Utility functions to create InputStreams from various sources.
*
* All returned InputStreams support the full range of Unicode
* up to U+10FFFF (the default behavior of InputStream only supports
* code points up to U+FFFF).
*/
export default {
// Creates an InputStream from a string.
fromString: function(str) {
return new CharStream(str, true);
},
/**
* Asynchronously creates an InputStream from a blob given the
* encoding of the bytes in that blob (defaults to 'utf8' if
* encoding is null).
*
* Invokes onLoad(result) on success, onError(error) on
* failure.
*/
fromBlob: function(blob, encoding, onLoad, onError) {
const reader = new window.FileReader();
reader.onload = function(e) {
const is = new CharStream(e.target.result, true);
onLoad(is);
};
reader.onerror = onError;
reader.readAsText(blob, encoding);
},
/**
* Creates an InputStream from a Buffer given the
* encoding of the bytes in that buffer (defaults to 'utf8' if
* encoding is null).
*/
fromBuffer: function(buffer, encoding) {
return new CharStream(buffer.toString(encoding), true);
},
/** Asynchronously creates an InputStream from a file on disk given
* the encoding of the bytes in that file (defaults to 'utf8' if
* encoding is null).
*
* Invokes callback(error, result) on completion.
*/
fromPath: function(path, encoding, callback) {
FileStream.fromPath(path, encoding, callback);
},
/**
* Synchronously creates an InputStream given a path to a file
* on disk and the encoding of the bytes in that file (defaults to
* 'utf8' if encoding is null).
*/
fromPathSync: function(path, encoding) {
return new FileStream(path, encoding);
}
};