org.codehaus.groovy.grails.web.taglib
Class GroovySyntaxTag

java.lang.Object
  extended by org.codehaus.groovy.grails.web.taglib.GroovySyntaxTag
All Implemented Interfaces:
GrailsTag
Direct Known Subclasses:
GroovyCollectTag, GroovyDefTag, GroovyEachTag, GroovyElseIfTag, GroovyElseTag, GroovyFindAllTag, GroovyGrepTag, GroovyIfTag, GroovyUnlessTag, GroovyWhileTag

public abstract class GroovySyntaxTag
extends java.lang.Object
implements GrailsTag

A tag type that gets translated directly into Groovy syntax by the GSP parser.

This is used for Java-implemented internal tags that the Parse class uses to directly inject code into the generated GSP source. These tags can do more than custom taglibs as the operate at the code level, rather than at the runtime view rendering level


Field Summary
protected static java.lang.String ATTRIBUTE_IN
           
protected static java.lang.String ATTRIBUTE_VAR
           
protected  java.util.Map<java.lang.String,java.lang.String> attributes
           
protected static java.lang.String ATTRIBUTES_STATUS
           
protected  java.lang.String foreachRenamedIt
           
protected  java.io.PrintWriter out
           
protected  GroovyPageParser parser
           
protected  java.util.Map tagContext
           
 
Constructor Summary
GroovySyntaxTag()
           
 
Method Summary
protected  java.lang.String calculateExpression(java.lang.String expr)
           
protected  void doEachMethod(java.lang.String in)
           
protected  void endEachMethod()
           
 java.lang.String getForeachRenamedIt()
           
 void init(java.util.Map context)
           
abstract  boolean isAllowPrecedingContent()
          Tags must return the correct value to indicate whether or not non-whitespace content is permitted before this tag.
abstract  boolean isKeepPrecedingWhiteSpace()
          Tags must return the correct value to indicate whether or not whitespace before this tag should be kept in the output.
 void setAttribute(java.lang.String name, java.lang.Object value)
          Sets an attribute of the tag
 void setAttributes(java.util.Map attributes)
          Sets the attributes of the tag
 void setWriter(java.io.Writer w)
          Sets the writer that processes the tag
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.codehaus.groovy.grails.web.taglib.GrailsTag
doEndTag, doStartTag, getName
 

Field Detail

ATTRIBUTE_IN

protected static final java.lang.String ATTRIBUTE_IN
See Also:
Constant Field Values

ATTRIBUTE_VAR

protected static final java.lang.String ATTRIBUTE_VAR
See Also:
Constant Field Values

ATTRIBUTES_STATUS

protected static final java.lang.String ATTRIBUTES_STATUS
See Also:
Constant Field Values

tagContext

protected java.util.Map tagContext

out

protected java.io.PrintWriter out

attributes

protected java.util.Map<java.lang.String,java.lang.String> attributes

parser

protected GroovyPageParser parser

foreachRenamedIt

protected java.lang.String foreachRenamedIt
Constructor Detail

GroovySyntaxTag

public GroovySyntaxTag()
Method Detail

init

public void init(java.util.Map context)
Specified by:
init in interface GrailsTag

setWriter

public void setWriter(java.io.Writer w)
Description copied from interface: GrailsTag
Sets the writer that processes the tag

Specified by:
setWriter in interface GrailsTag

setAttributes

public void setAttributes(java.util.Map attributes)
Description copied from interface: GrailsTag
Sets the attributes of the tag

Specified by:
setAttributes in interface GrailsTag

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object value)
Description copied from interface: GrailsTag
Sets an attribute of the tag

Specified by:
setAttribute in interface GrailsTag

isKeepPrecedingWhiteSpace

public abstract boolean isKeepPrecedingWhiteSpace()

Tags must return the correct value to indicate whether or not whitespace before this tag should be kept in the output.

This is for tags that must follow other tags, such as g:else or g:elseif that do not allow content between them and the previous tag, and need to swallow the whitespace between them.

Returns:
true if any whitespace immediately before the tag should be kept in the output - false if it is to be discarded

isAllowPrecedingContent

public abstract boolean isAllowPrecedingContent()

Tags must return the correct value to indicate whether or not non-whitespace content is permitted before this tag.

This is for tags that must follow other tags, such as g:else or g:elseif that do not allow content between them and the previous tag. It is simply used as a safety mechanism to trap incorrect usage of tags.

TODO rework this and combine with isKeepPrecedingWhiteSpace as really they are used in the same situations

Returns:
true if any content is allowed immediately before the tag - false if it is an error to have such content before it

calculateExpression

protected java.lang.String calculateExpression(java.lang.String expr)

doEachMethod

protected void doEachMethod(java.lang.String in)
Parameters:
in -

endEachMethod

protected void endEachMethod()

getForeachRenamedIt

public java.lang.String getForeachRenamedIt()