Class Attributes

  • All Implemented Interfaces:
    Cloneable, Iterable<Attribute>

    public class Attributes
    extends Object
    implements Iterable<Attribute>, Cloneable
    The attributes of an Element.

    Attributes are treated as a map: there can be only one value associated with an attribute key/name.

    Attribute name and value comparisons are generally case sensitive. By default for HTML, attribute names are normalized to lower-case on parsing. That means you should use lower-case strings when referring to attributes by name.

    Author:
    Jonathan Hedley, jonathan@hedley.net
    • Constructor Detail

      • Attributes

        public Attributes()
    • Method Detail

      • get

        public String get​(String key)
        Get an attribute value by key.
        Parameters:
        key - the (case-sensitive) attribute key
        Returns:
        the attribute value if set; or empty string if not set (or a boolean attribute).
        See Also:
        hasKey(String)
      • getIgnoreCase

        public String getIgnoreCase​(String key)
        Get an attribute's value by case-insensitive key
        Parameters:
        key - the attribute name
        Returns:
        the first matching attribute value if set; or empty string if not set (ora boolean attribute).
      • put

        public Attributes put​(String key,
                              String value)
        Set a new attribute, or replace an existing one by key.
        Parameters:
        key - case sensitive attribute key (not null)
        value - attribute value (may be null, to set a boolean attribute)
        Returns:
        these attributes, for chaining
      • put

        public Attributes put​(String key,
                              boolean value)
        Set a new boolean attribute, remove attribute if value is false.
        Parameters:
        key - case insensitive attribute key
        value - attribute value
        Returns:
        these attributes, for chaining
      • put

        public Attributes put​(Attribute attribute)
        Set a new attribute, or replace an existing one by key.
        Parameters:
        attribute - attribute with case sensitive key
        Returns:
        these attributes, for chaining
      • remove

        public void remove​(String key)
        Remove an attribute by key. Case sensitive.
        Parameters:
        key - attribute key to remove
      • removeIgnoreCase

        public void removeIgnoreCase​(String key)
        Remove an attribute by key. Case insensitive.
        Parameters:
        key - attribute key to remove
      • hasKey

        public boolean hasKey​(String key)
        Tests if these attributes contain an attribute with this key.
        Parameters:
        key - case-sensitive key to check for
        Returns:
        true if key exists, false otherwise
      • hasKeyIgnoreCase

        public boolean hasKeyIgnoreCase​(String key)
        Tests if these attributes contain an attribute with this key.
        Parameters:
        key - key to check for
        Returns:
        true if key exists, false otherwise
      • hasDeclaredValueForKey

        public boolean hasDeclaredValueForKey​(String key)
        Check if these attributes contain an attribute with a value for this key.
        Parameters:
        key - key to check for
        Returns:
        true if key exists, and it has a value
      • hasDeclaredValueForKeyIgnoreCase

        public boolean hasDeclaredValueForKeyIgnoreCase​(String key)
        Check if these attributes contain an attribute with a value for this key.
        Parameters:
        key - case-insensitive key to check for
        Returns:
        true if key exists, and it has a value
      • size

        public int size()
        Get the number of attributes in this set.
        Returns:
        size
      • isEmpty

        public boolean isEmpty()
        Test if this Attributes list is empty (size==0).
      • addAll

        public void addAll​(Attributes incoming)
        Add all the attributes from the incoming set to this set.
        Parameters:
        incoming - attributes to add to these attributes.
      • asList

        public List<Attribute> asList()
        Get the attributes as a List, for iteration.
        Returns:
        an view of the attributes as an unmodifiable List.
      • dataset

        public Map<String,​String> dataset()
        Retrieves a filtered view of attributes that are HTML5 custom data attributes; that is, attributes with keys starting with data-.
        Returns:
        map of custom data attributes.
      • html

        public String html()
        Get the HTML representation of these attributes.
        Returns:
        HTML
      • equals

        public boolean equals​(Object o)
        Checks if these attributes are equal to another set of attributes, by comparing the two sets
        Overrides:
        equals in class Object
        Parameters:
        o - attributes to compare with
        Returns:
        if both sets of attributes have the same content
      • hashCode

        public int hashCode()
        Calculates the hashcode of these attributes, by iterating all attributes and summing their hashcodes.
        Overrides:
        hashCode in class Object
        Returns:
        calculated hashcode
      • normalize

        public void normalize()
        Internal method. Lowercases all keys.
      • deduplicate

        public int deduplicate​(ParseSettings settings)
        Internal method. Removes duplicate attribute by name. Settings for case sensitivity of key names.
        Parameters:
        settings - case sensitivity
        Returns:
        number of removed dupes