EndTagType
Date: 2016-12-04

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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `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

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `EndTagType(java.lang.String description, java.lang.String startDelimiter, java.lang.String closingDelimiter, boolean isServerTag)` Constructs a new `EndTagType` object with the specified properties.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected EndTag` | `constructEndTag(Source source, int begin, int end, java.lang.String name)` Internal method for the construction of an `EndTag` object of this type.
    `java.lang.String` | `generateHTML(java.lang.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`.
    `java.lang.String` | `getEndTagName(java.lang.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(java.lang.String description,
                    java.lang.String startDelimiter,
                    java.lang.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 java.lang.String getEndTagName(java.lang.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 java.lang.String generateHTML(java.lang.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,
                               java.lang.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.