package railo.runtime.ext.tag;
public interface TagMetaData {
/**
* Body is not allowed for this tag
*/
public int BODY_CONTENT_EMPTY=0;
/**
* tag can have a body, but it is not required
*/
public int BODY_CONTENT_FREE=1;
/**
* body is required for this tag
*/
public int BODY_CONTENT_MUST=2;
/**
* tag has a fix defined group of attributes, only this attributes are allowed
*/
public int ATTRIBUTE_TYPE_FIX=4;
/**
* there is no restriction or rules for attributes, tag can have as many as whished
*/
public int ATTRIBUTE_TYPE_DYNAMIC=8;
/**
* tag has a fix set of attributes, but is also free in use additional tags
*/
public int ATTRIBUTE_TYPE_MIXED=16;
/**
* type of the body content
* @return TagMetaData.BODY_CONTENT_EMPTY,TagMetaData.BODY_CONTENT_FREE,TagMetaData.BODY_CONTENT_MUST
*/
public int getBodyContent();
/**
* attribute type
* @return TagMetaData.ATTRIBUTE_TYPE_FIX,TagMetaData.ATTRIBUTE_TYPE_DYNAMIC,TagMetaData.ATTRIBUTE_TYPE_MIXED
*/
public int getAttributeType();
/**
* minimal count of attributes needed for tag
* @return minimal count of attributes
*/
public int getAttributeMin();
/**
* maximum count of attributes needed for tag
* @return maximum count of attributes or -1 for infinity attributes
*/
public int getAttributeMax();
/**
* is the body of the tag parsed like inside a cfoutput
* @return parsed or not
*/
public boolean isBodyRuntimeExpressionValue();
/**
* A description of the tag.
* @return description of the tag
*/
public String getDescription();
/**
* fix attributes of the tag
*/
public TagMetaDataAttr[] getAttributes();
/**
* has the tag a body
* @return has a body
*/
public boolean hasBody();
/**
* can the tag handle exceptons
* @return can handle exceptions
*/
public boolean handleException();
/**
* has the tag a appendix
* @return has appendix
*/
public boolean hasAppendix();
}