UNPKG

jscc-parser

Version:

A LALR(1) Parser Generator for JavaScript written in JavaScript.

117 lines (109 loc) 3.93 kB
/* * Universal module definition for browser-specific IO. */ (function(root, factory) { /* istanbul ignore next */ if (typeof define === 'function' && define.amd) { define(['require', '../global'], factory); } else if (typeof module === 'object' && module.exports) { module.exports = factory(require); } else { root.jsccio = factory(function(mod) { return root["jscc" + mod.split("/").pop()]; }); } }(this, function(/** reqParameter */ require) { //>>excludeStart("closure", pragmas.closure); var jscc = {}; //>>excludeEnd("closure"); var global = /** @type {jscc.global} */ (require("../global")); /** * @constructor * @implements {jscc.io} */ jscc.ioBrowser = function() { }; /** * @inheritDoc */ jscc.ioBrowser.prototype.read_all_input = function(options) { if (typeof global.read_all_input_function === 'function') { options = options || {}; if (typeof options.chunkCallback === 'function') { var chunkCallback = options.chunkCallback; var endCallback = (typeof options.endCallback === 'function') ? options.endCallback : function() { }; chunkCallback(global.read_all_input_function()); endCallback(); } else { return global.read_all_input_function(); } } else { throw new Error("global.read_all_input_function was not defined"); } }; /** * @inheritDoc */ jscc.ioBrowser.prototype.read_template = function(options) { if (typeof global.read_template_function === 'function') { options = options || {}; if (typeof options.chunkCallback === 'function') { var chunkCallback = options.chunkCallback; var endCallback = (typeof options.endCallback === 'function') ? options.endCallback : function() { }; chunkCallback(global.read_template_function()); endCallback(); } else { return global.read_template_function(); } } else { throw new Error("global.read_template_function was not defined"); } }; /** * @inheritDoc */ jscc.ioBrowser.prototype.write_output = function(options) { if (typeof global.write_output_function === 'function') { var text = ""; var callback = function() { }; if (typeof options === 'string') { text = options; } else if (options && (typeof options === 'object')) { if (typeof options.text === 'string') { text = options.text; } else { throw new Error("options was not a string, and options.text was not a string"); } if (typeof options.callback === 'function') { callback = options.callback; } } global.write_output_function(text); callback(); } else { throw new Error("global.write_output_function was not defined"); } }; /** * @inheritDoc */ jscc.ioBrowser.prototype.write_debug = function(text) { if (typeof global.write_debug_function === 'function') { global.write_debug_function(text); } }; /** * @inheritDoc */ jscc.ioBrowser.prototype.exit = function(exitCode) { // Unsupported on most browser platforms. Although PhantomJS does support // this feature, for consistency, don't try. }; /** * @module jscc/io/io */ return new jscc.ioBrowser(); }));