
js.prompto.declaration.ConcreteCategoryDeclaration.js Maven / Gradle / Ivy
var CategoryDeclaration = require("./CategoryDeclaration").CategoryDeclaration;
var SetterMethodDeclaration = require("./SetterMethodDeclaration").SetterMethodDeclaration;
var GetterMethodDeclaration = require("./GetterMethodDeclaration").GetterMethodDeclaration;
var MethodDeclarationMap = null;
var ConcreteInstance = require("../value/ConcreteInstance").ConcreteInstance;
var mergeObjects = require("../utils/Utils").mergeObjects;
exports.resolve = function() {
MethodDeclarationMap = require("../runtime/Context").MethodDeclarationMap;
}
function ConcreteCategoryDeclaration(id, attributes, derivedFrom, methods) {
CategoryDeclaration.call(this, id, attributes);
this.derivedFrom = derivedFrom || null;
this.methodsMap = null;
this.methods = methods || [];
return this;
}
ConcreteCategoryDeclaration.prototype = Object.create(CategoryDeclaration.prototype);
ConcreteCategoryDeclaration.prototype.constructor = ConcreteCategoryDeclaration;
ConcreteCategoryDeclaration.prototype.toEDialect = function(writer) {
var hasMethods = this.methods!=null && this.methods.length>0;
this.protoToEDialect(writer, hasMethods, false); // no bindings
if(hasMethods)
this.methodsToEDialect(writer, this.methods);
}
ConcreteCategoryDeclaration.prototype.categoryTypeToEDialect = function(writer) {
if(this.derivedFrom==null)
writer.append("category");
else
this.derivedFrom.toDialect(writer, true);
};
ConcreteCategoryDeclaration.prototype.toODialect = function(writer) {
var hasMethods = this.methods!=null && this.methods.length>0;
this.allToODialect(writer, hasMethods);
};
ConcreteCategoryDeclaration.prototype.categoryTypeToODialect = function(writer) {
writer.append("category");
};
ConcreteCategoryDeclaration.prototype.categoryExtensionToODialect = function(writer) {
if(this.derivedFrom!=null) {
writer.append(" extends ");
this.derivedFrom.toDialect(writer, true);
}
};
ConcreteCategoryDeclaration.prototype.bodyToODialect = function(writer) {
this.methodsToODialect (writer, this.methods);
};
ConcreteCategoryDeclaration.prototype.toMDialect = function(writer) {
this.protoToMDialect(writer, this.derivedFrom);
this.methodsToMDialect(writer);
};
ConcreteCategoryDeclaration.prototype.categoryTypeToMDialect = function(writer) {
writer.append("class");
};
ConcreteCategoryDeclaration.prototype.methodsToMDialect = function(writer) {
writer.indent();
if(this.methods==null || this.methods.length==0)
writer.append("pass\n");
else {
writer.newLine();
this.methods.forEach(function(method) {
var w = writer.newMemberWriter();
method.toDialect(w);
writer.newLine();
});
}
writer.dedent();
};
ConcreteCategoryDeclaration.prototype.hasAttribute = function(context, name) {
if (CategoryDeclaration.prototype.hasAttribute.call(this, context, name)) {
return true;
} else {
return this.hasDerivedAttribute(context, name);
}
};
ConcreteCategoryDeclaration.prototype.hasDerivedAttribute = function(context, name) {
if(this.derivedFrom==null) {
return false;
}
for(var i=0;i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy