All Downloads are FREE. Search and download functionalities are using the official Maven repository.

js.prompto.expression.ReadAllExpression.js Maven / Gradle / Ivy

var ResourceType = require("../type/ResourceType").ResourceType;
var ResourceContext = require("../runtime/Context").ResourceContext;
var NullReferenceError = require("../error/NullReferenceError").NullReferenceError;
var InternalError = require("../error/InternalError").InternalError;
var InvalidResourceError = require("../error/InvalidResourceError").InvalidResourceError;
var TextType = require("../type/TextType").TextType;
var Text = require("../value/Text").Text;

function ReadAllExpression(resource) {
	this.resource = resource;
	return this;
}

ReadAllExpression.prototype.toString = function() {
	return "read all from " + this.resource.toString();
};

ReadAllExpression.prototype.toDialect = function(writer) {
    writer.append("read all from ");
    this.resource.toDialect(writer);
};

ReadAllExpression.prototype.check = function(context) {
    context = context.newResourceContext();
    var sourceType = this.resource.check(context);
	if(!(sourceType instanceof ResourceType))
        context.problemListener.reportNotAResource(this.resource);
	return TextType.instance;
};

ReadAllExpression.prototype.interpret = function(context) {
    context = context.newResourceContext();
    var res = this.resource.interpret(context);
	if(res==null) {
		throw new NullReferenceError();
	}
	if(!(res.isReadable)) {
		throw new InternalError("Illegal read source: " + o);
	}
	if(!res.isReadable()) {
		throw new InvalidResourceError("Not readable");
	}
    try {
        var s = res.readFully();
        return new Text(s);
    } finally {
        res.close();
    }
};

exports.ReadAllExpression = ReadAllExpression;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy