Groovy for Domain-specific Languages - Second Edition

(nextflipdebug2) #1

Integrating It All


[ 332 ]

)
),
new ExpressionStatement(
new MethodCallExpression(
new VariableExpression('session'),
new ConstantExpression('asMap'),
ArgumentListExpression.EMPTY_ARGUMENTS
)
)
],
new VariableScope()
)
def eventMethodNode = new MethodNode(
"${event}",
Modifier.PUBLIC,
null,
[
new Parameter(
ClassHelper.make(Object, false),
"event",
new ConstantExpression(null)
),
new Parameter(
ClassHelper.make(Object, false),
"sessionData",
new ConstantExpression(null)
)
] as Parameter[],
null,
blockStatement
)
classNode.addMethod(eventMethodNode)
}
}

That concludes the modification we need to make to the engine class. The final part
of the pattern we need to generate is the page classes. We create a new page class for
each page in the engine DSL:


def buildPageClasses() {
for (page in model.pages) {
def pageNode = buildPageClass(page)
for (event in model.events) {
buildPageClassEventClosure(event, page, pageNode)
}

http://www.ebook3000.com
Free download pdf