--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-includes/html-api/class-wp-html-attribute-token.php Fri Sep 05 18:40:08 2025 +0200
@@ -0,0 +1,116 @@
+<?php
+/**
+ * HTML API: WP_HTML_Attribute_Token class
+ *
+ * @package WordPress
+ * @subpackage HTML-API
+ * @since 6.2.0
+ */
+
+/**
+ * Core class used by the HTML tag processor as a data structure for the attribute token,
+ * allowing to drastically improve performance.
+ *
+ * This class is for internal usage of the WP_HTML_Tag_Processor class.
+ *
+ * @access private
+ * @since 6.2.0
+ * @since 6.5.0 Replaced `end` with `length` to more closely match `substr()`.
+ *
+ * @see WP_HTML_Tag_Processor
+ */
+class WP_HTML_Attribute_Token {
+ /**
+ * Attribute name.
+ *
+ * @since 6.2.0
+ *
+ * @var string
+ */
+ public $name;
+
+ /**
+ * Attribute value.
+ *
+ * @since 6.2.0
+ *
+ * @var int
+ */
+ public $value_starts_at;
+
+ /**
+ * How many bytes the value occupies in the input HTML.
+ *
+ * @since 6.2.0
+ *
+ * @var int
+ */
+ public $value_length;
+
+ /**
+ * The string offset where the attribute name starts.
+ *
+ * @since 6.2.0
+ *
+ * @var int
+ */
+ public $start;
+
+ /**
+ * Byte length of text spanning the attribute inside a tag.
+ *
+ * This span starts at the first character of the attribute name
+ * and it ends after one of three cases:
+ *
+ * - at the end of the attribute name for boolean attributes.
+ * - at the end of the value for unquoted attributes.
+ * - at the final single or double quote for quoted attributes.
+ *
+ * Example:
+ *
+ * <div class="post">
+ * ------------ length is 12, including quotes
+ *
+ * <input type="checked" checked id="selector">
+ * ------- length is 6
+ *
+ * <a rel=noopener>
+ * ------------ length is 11
+ *
+ * @since 6.5.0 Replaced `end` with `length` to more closely match `substr()`.
+ *
+ * @var int
+ */
+ public $length;
+
+ /**
+ * Whether the attribute is a boolean attribute with value `true`.
+ *
+ * @since 6.2.0
+ *
+ * @var bool
+ */
+ public $is_true;
+
+ /**
+ * Constructor.
+ *
+ * @since 6.2.0
+ * @since 6.5.0 Replaced `end` with `length` to more closely match `substr()`.
+ *
+ * @param string $name Attribute name.
+ * @param int $value_start Attribute value.
+ * @param int $value_length Number of bytes attribute value spans.
+ * @param int $start The string offset where the attribute name starts.
+ * @param int $length Byte length of the entire attribute name or name and value pair expression.
+ * @param bool $is_true Whether the attribute is a boolean attribute with true value.
+ */
+ public function __construct( $name, $value_start, $value_length, $start, $length, $is_true ) {
+ $this->name = $name;
+ $this->value_starts_at = $value_start;
+ $this->value_length = $value_length;
+ $this->start = $start;
+ $this->length = $length;
+ $this->is_true = $is_true;
+ }
+}