## net.htmlparser.jericho
Class EndTagType

    java.lang.Object
      net.htmlparser.jericho.TagType
          net.htmlparser.jericho.EndTagType

Direct Known Subclasses:
  EndTagTypeGenericImplementation

    public abstract class EndTagType

extends TagType

Defines the syntax for an end tag type.

An end tag type is a `TagType` that starts with the characters '`</`'.

The singleton instances of all the standard end tag types are available in this class as static fields.

Because all `EndTagType` instaces must be singletons, the '`==`' operator can be used to test for a particular tag type instead of the `equals(Object)` method.

See Also:
  `StartTagType`

Field Summary
`static EndTagType` `NORMAL` The tag type given to a normal HTML or XML end tag (`</name>`).
`static EndTagType` `UNREGISTERED` The tag type given to an unregistered end tag (`</ ... >`).

Constructor Summary
`protected` `EndTagType(String description, String startDelimiter, String closingDelimiter, boolean isServerTag)` Constructs a new `EndTagType` object with the specified properties.

Method Summary
`protected EndTag` `constructEndTag(Source source, int begin, int end, String name)` Internal method for the construction of an `EndTag` object of this type.
`String` `generateHTML(String startTagName)` Generates the HTML text of an end tag of this type given the name of a corresponding start tag.
`StartTagType` `getCorrespondingStartTagType()` Returns the type of start tag that is usually paired with an end tag of this type to form an `Element`.
`String` `getEndTagName(String startTagName)` Returns the end tag name that is required to match a corresponding start tag with the specified name.

Methods inherited from class net.htmlparser.jericho.TagType
`constructTagAt, deregister, getClosingDelimiter, getDescription, getNamePrefix, getRegisteredTagTypes, getStartDelimiter, getTagTypesIgnoringEnclosedMarkup, isServerTag, isValidPosition, register, setTagTypesIgnoringEnclosedMarkup, tagEncloses, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### UNREGISTERED

    public static final EndTagType UNREGISTERED

  The tag type given to an unregistered end tag (`</ ... >`).

  See the documentation of the `Tag.isUnregistered()` method for details.

  Properties:

    Property/Method | Value
    --- | ---
    `Description` | /unregistered
    `StartDelimiter` | `</`
    `ClosingDelimiter` | `>`
    `IsServerTag` | `false`
    `NamePrefix` | (empty string)
    `CorrespondingStartTagType` | `null`
    `generateHTML``("StartTagName")` | `</StartTagName>`

  Example:
    `</ "This is not recognised as any of the predefined end tag types in this library">`

  See Also:
    `StartTagType.UNREGISTERED`

### NORMAL

    public static final EndTagType NORMAL

  The tag type given to a normal HTML or XML end tag (`</name>`).

  Properties:

    Property/Method | Value
    --- | ---
    `Description` | /normal
    `StartDelimiter` | `</`
    `ClosingDelimiter` | `>`
    `IsServerTag` | `false`
    `NamePrefix` | (empty string)
    `CorrespondingStartTagType` | `StartTagType.NORMAL`
    `generateHTML``("StartTagName")` | `</StartTagName>`

  Example:
    `</div>`

Constructor Detail

### EndTagType

    protected EndTagType(String description,
                         String startDelimiter,
                         String closingDelimiter,
                         boolean isServerTag)

  Constructs a new `EndTagType` object with the specified properties.
  (implementation assistance method)

  As `EndTagType` is an abstract class, this constructor is only called from sub-class constructors.

  Parameters:
    `description` - a description of the new end tag type useful for debugging purposes.
    `startDelimiter` - the start delimiter of the new end tag type.
    `closingDelimiter` - the closing delimiter of the new end tag type.
    `isServerTag` - indicates whether the new end tag type is a server tag.

Method Detail

### getCorrespondingStartTagType

    public StartTagType getCorrespondingStartTagType()

  Returns the type of start tag that is usually paired with an end tag of this type to form an `Element`.
  (default implementation method)

  The default implementation returns `null`.

  This property is informational only and is not used by the parser in any way.

  The mapping of end tag type to the corresponding start tag type is in any case one-to-many, which is why the definition emphasises the word "usually". An example of this is the `PHPTagTypes.PHP_SCRIPT` start tag type, whose corresponding end tag type is `EndTagType.NORMAL`, while the converse is not true.

  The only predefined end tag type that returns `null` for this property is the special `UNREGISTERED` end tag type.

  Although this method is used like a property method, it is implemented as a default implementation method to avoid cyclic references between statically instantiated `StartTagType` and `EndTagType` objects.

  Standard Tag Type Values:

    End Tag Type | Corresponding Start Tag Type
    --- | ---
    `UNREGISTERED` | `null`
    `NORMAL` | `StartTagType.NORMAL`

  Extended Tag Type Values:

    End Tag Type | Corresponding Start Tag Type
    --- | ---
    `MasonTagTypes.MASON_COMPONENT_CALLED_WITH_CONTENT_END` | `MasonTagTypes.MASON_COMPONENT_CALLED_WITH_CONTENT`
    `MasonTagTypes.MASON_NAMED_BLOCK_END` | `MasonTagTypes.MASON_NAMED_BLOCK`

  Returns:
    the type of start tag that is usually paired with an end tag of this type to form an `Element`.
  See Also:
    `StartTagType.getCorrespondingEndTagType()`

### getEndTagName

    public String getEndTagName(String startTagName)

  Returns the end tag name that is required to match a corresponding start tag with the specified name.
  (property method)

  This default implementation simply returns `startTagName`.

  Note that the `startTagName` parameter should include the start tag's name prefix if it has one.

  Parameters:
    `startTagName` - the name of a corresponding start tag, including its name prefix.
  Returns:
    the end tag name that is required to match a corresponding start tag with the specified name.

### generateHTML

    public String generateHTML(String startTagName)

  Generates the HTML text of an end tag of this type given the name of a corresponding start tag.
  (property method)

  This default implementation returns `"</"+``getEndTagName``(startTagName)+``TagType.getClosingDelimiter()`.

  Note that the `startTagName` parameter should include the start tag's name prefix if it has one.

  Parameters:
    `startTagName` - the name of a corresponding start tag, including its name prefix.
  Returns:
    the HTML text of an end tag of this type given the name of a corresponding start tag.

### constructEndTag

    protected final EndTag constructEndTag(Source source,
                                           int begin,
                                           int end,
                                           String name)

  Internal method for the construction of an `EndTag` object of this type.
  (implementation assistance method)

  Intended for use from within the `constructTagAt(Source, int pos)` method.

  Parameters:
    `source` - the `Source` document.
    `begin` - the character position in the source document where this tag begins.
    `end` - the character position in the source document where this tag ends.
    `name` - the name of the tag.
  Returns:
    the new `EndTag` object.