I have been thinking about the design of a multiple choice question. Its layout is something like
<question>
<stem>text....</stem>
<choices>
<choice>text ...</choice>
<choice>text...</choice>
</choices>
</question>
My initial design might be
class Stem extends Paragraph {}
class Choices extends Block {
static get contains() { return "choice" }
}
class Choice extends Block {
static get contains() { return null }
static get kind() { return "choice." }
}
export class MultipleChoice extends Block {
static get contains() { return "stem,choices" }
canContainType(type) {
return type.name == "Stem" || type.name == "Choices"
}
}
Do you support multiple node types in contains()? What is the significance of the dot in kind()?
For serialization I might have:
MultipleChoice.prototype.serializeDOM = node => {
let dom =
elt("div", {class: "multiplechoice"},
// serialize stem
// serialize choices
)
return dom;
}
How do I invoke the serialization of subtypes?