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

js.prompto.instance.MemberInstance.js Maven / Gradle / Ivy

var Document = require("../value/Document").Document;
var NotMutableError = require("../error/NotMutableError").NotMutableError;

function MemberInstance(id) {
	this.parent = null;
	this.id = id;
	return this;
}

Object.defineProperty(MemberInstance.prototype, "name", {
    get : function() {
        return this.id.name;
    }
});


MemberInstance.prototype.toString = function() {
	return this.parent.toString() + "." + this.name;
};

MemberInstance.prototype.toDialect = function(writer) {
    this.parent.toDialect(writer);
    writer.append(".");
    writer.append(this.name);
};

MemberInstance.prototype.checkAssignValue = function(context, valueType) {
	return this.parent.checkAssignMember(context, this.name, valueType);
};

MemberInstance.prototype.checkAssignMember = function(context, name, valueType) {
	this.parent.checkAssignMember(context, this.name);
    return valueType; // TODO
};

MemberInstance.prototype.checkAssignItem = function(context, itemType, valueType) {
    return valueType; // TODO
};


MemberInstance.prototype.assign = function(context, expression) {
    var root = this.parent.interpret(context);
    if(!root.mutable)
        throw new NotMutableError();
	var value = expression.interpret(context);
    root.setMember(context, this.name, value);
};

MemberInstance.prototype.interpret = function(context) {
	var root = this.parent.interpret(context);
	return root.getMemberValue(context, this.name, true);
};

exports.MemberInstance = MemberInstance;




© 2015 - 2025 Weber Informatics LLC | Privacy Policy