1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.millscript.millscript.loaders;
22
23 import org.millscript.commons.xml.api.Name;
24 import org.millscript.commons.xml.tokenizer.NoNamespacesName;
25 import org.millscript.millscript.expr.ConstantExpr;
26 import org.millscript.millscript.expr.IndexExpr;
27 import org.millscript.millscript.expr.NameExpr;
28
29 /**
30 * This class compiles a field element in a MillScript XHTML skeleton. A field
31 * element is called <code>field</code> and has a single attribute called
32 * <code>name</code>.
33 */
34 public class FieldName implements SpecialTemplateName {
35
36 /**
37 * This name is used to obtain the value of the name attribute of the
38 * field element.
39 */
40 private static final Name FIELD_NAME_ARG = new NoNamespacesName( "name" );
41
42 /**
43 * The loader we will insert our expressions into.
44 */
45 private final BasicTemplateLoader basicTemplateLoader;
46
47 /**
48 * Constructs a new shortcut argument element handler, to insert
49 * expressions for the specified argument number into the specified loader.
50 *
51 * @param btl the loader to insert expressions into
52 */
53 public FieldName( final BasicTemplateLoader btl ) {
54 this.basicTemplateLoader = btl;
55 }
56
57 /**
58 * @see org.millscript.millscript.loaders.SpecialTemplateName#handle()
59 */
60 public void handle() {
61
62
63 this.basicTemplateLoader.tokenVisitor.parentTokenVisitor.pushChildElement(
64
65 IndexExpr.make(
66 new NameExpr( "arg" ),
67 new ConstantExpr(
68 this.basicTemplateLoader.tokenVisitor.startTagToken.getAttributes().get( FIELD_NAME_ARG )
69 )
70 )
71 );
72 }
73
74 }