01: package org.apache.dvsl.directive;
02:
03: /*
04: * Licensed to the Apache Software Foundation (ASF) under one
05: * or more contributor license agreements. See the NOTICE file
06: * distributed with this work for additional information
07: * regarding copyright ownership. The ASF licenses this file
08: * to you under the Apache License, Version 2.0 (the
09: * "License"); you may not use this file except in compliance
10: * with the License. You may obtain a copy of the License at
11: *
12: * http://www.apache.org/licenses/LICENSE-2.0
13: *
14: * Unless required by applicable law or agreed to in writing,
15: * software distributed under the License is distributed on an
16: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17: * KIND, either express or implied. See the License for the
18: * specific language governing permissions and limitations
19: * under the License.
20: */
21:
22: import java.io.Writer;
23: import java.io.IOException;
24:
25: import org.apache.velocity.context.InternalContextAdapter;
26: import org.apache.velocity.runtime.parser.node.Node;
27: import org.apache.velocity.runtime.parser.node.SimpleNode;
28: import org.apache.velocity.runtime.directive.Directive;
29: import org.apache.velocity.runtime.parser.ParserTreeConstants;
30: import org.apache.velocity.runtime.RuntimeServices;
31:
32: import org.apache.dvsl.TemplateHandler;
33:
34: /**
35: * Velocity Directive to handle template registration of
36: * match declarations (like the XSLT match=)
37: *
38: * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a>
39: */
40: public class MatchDirective extends Directive {
41: public String getName() {
42: return "match";
43: }
44:
45: public int getType() {
46: return BLOCK;
47: }
48:
49: public boolean render(InternalContextAdapter context,
50: Writer writer, Node node) throws IOException {
51:
52: /*
53: * what is our arg?
54: */
55:
56: Node n = (SimpleNode) node.jjtGetChild(0);
57:
58: if (n.getType() == ParserTreeConstants.JJTSTRINGLITERAL) {
59: try {
60: String element = (String) ((SimpleNode) node
61: .jjtGetChild(0)).value(context);
62: TemplateHandler th = (TemplateHandler) rsvc
63: .getApplicationAttribute("org.apache.dvsl.TemplateHandler");
64:
65: th.registerMatch(element, (SimpleNode) node
66: .jjtGetChild(node.jjtGetNumChildren() - 1));
67: } catch (Exception ee) {
68: }
69:
70: }
71:
72: return true;
73: }
74: }
|