q-class
q-class baseThing {
constructor(prefix) {
this.prefix = prefix;
}
function baseLabel() {
return this.prefix + ":" + this.id;
}
}
q-class myClass extends baseThing {
slot { myslot }
myClass(prefix, suffix) {
super(prefix);
this.suffix = suffix;
this.readyValue = this.id + ":" + suffix;
}
function label() {
return this.baseLabel() + ":" + this.suffix;
}
}
myClass myObject("pre", "done") {
id: "visual-qclass-instance"
myslot {
div { text { slotted child rendered } }
}
}
div#result {
text { waiting }
onready {
var rendered = document.querySelector("myclass#visual-qclass-instance");
var objectOk =
typeof myObject === "object" &&
myObject.readyValue === "visual-qclass-instance:done" &&
myObject.label() === "pre:visual-qclass-instance:done" &&
myObject.qdom() &&
myObject.element() === rendered &&
myObject.slots().length === 1;
var domOk = rendered && rendered.textContent.indexOf("slotted child rendered") !== -1;
var fresh = typeof myClass === "function" ? new myClass("x", "y") : null;
var ctorOk = fresh && fresh.prefix === "x" && fresh.suffix === "y";
var ok = objectOk && domOk && ctorOk;
this.className = ok ? "pass" : "fail";
this.textContent = ok ? "q-class-ok" : "q-class-fail object=" + objectOk + " dom=" + domOk + " ctor=" + ctorOk;
document.body.setAttribute("data-qclass-status", ok ? "pass" : "fail");
}
}