| /** | |
| * HTML API: WP_HTML_Token class | |
| * | |
| * @package WordPress | |
| * @subpackage HTML-API | |
| * @since 6.4.0 | |
| */ | |
| /** | |
| * Core class used by the HTML processor during HTML parsing | |
| * for referring to tokens in the input HTML string. | |
| * | |
| * This class is designed for internal use by the HTML processor. | |
| * | |
| * @since 6.4.0 | |
| * | |
| * @access private | |
| * | |
| * @see WP_HTML_Processor | |
| */ | |
| class WP_HTML_Token { | |
| /** | |
| * Name of bookmark corresponding to source of token in input HTML string. | |
| * | |
| * Having a bookmark name does not imply that the token still exists. It | |
| * may be that the source token and underlying bookmark was wiped out by | |
| * some modification to the source HTML. | |
| * | |
| * @since 6.4.0 | |
| * | |
| * @var string | |
| */ | |
| public $bookmark_name = null; | |
| /** | |
| * Name of node; lowercase names such as "marker" are not HTML elements. | |
| * | |
| * For HTML elements/tags this value should come from WP_HTML_Processor::get_tag(). | |
| * | |
| * @since 6.4.0 | |
| * | |
| * @see WP_HTML_Processor::get_tag() | |
| * | |
| * @var string | |
| */ | |
| public $node_name = null; | |
| /** | |
| * Whether node contains the self-closing flag. | |
| * | |
| * A node may have a self-closing flag when it shouldn't. This value | |
| * only reports if the flag is present in the original HTML. | |
| * | |
| * @since 6.4.0 | |
| * | |
| * @see https://html.spec.whatwg.org/#self-closing-flag | |
| * | |
| * @var bool | |
| */ | |
| public $has_self_closing_flag = false; | |
| /** | |
| * Called when token is garbage-collected or otherwise destroyed. | |
| * | |
| * @var callable|null | |
| */ | |
| public $on_destroy = null; | |
| /** | |
| * Constructor - creates a reference to a token in some external HTML string. | |
| * | |
| * @since 6.4.0 | |
| * | |
| * @param string $bookmark_name Name of bookmark corresponding to location in HTML where token is found. | |
| * @param string $node_name Name of node token represents; if uppercase, an HTML element; if lowercase, a special value like "marker". | |
| * @param bool $has_self_closing_flag Whether the source token contains the self-closing flag, regardless of whether it's valid. | |
| * @param callable $on_destroy Function to call when destroying token, useful for releasing the bookmark. | |
| */ | |
| public function __construct( $bookmark_name, $node_name, $has_self_closing_flag, $on_destroy = null ) { | |
| $this->bookmark_name = $bookmark_name; | |
| $this->node_name = $node_name; | |
| $this->has_self_closing_flag = $has_self_closing_flag; | |
| $this->on_destroy = $on_destroy; | |
| } | |
| /** | |
| * Destructor. | |
| * | |
| * @since 6.4.0 | |
| */ | |
| public function __destruct() { | |
| if ( is_callable( $this->on_destroy ) ) { | |
| call_user_func( $this->on_destroy, $this->bookmark_name ); | |
| } | |
| } | |
| /** | |
| * Wakeup magic method. | |
| * | |
| * @since 6.4.2 | |
| */ | |
| public function __wakeup() { | |
| throw new \LogicException( __CLASS__ . ' should never be unserialized' ); | |
| } | |
| } | |