Introduce HTML API with HTML Tag Processor
This commit pulls in the HTML Tag Processor from the Gutenbeg repository.
The Tag Processor attempts to be an HTML5-spec-compliant parser that provides the ability in PHP to find specific HTML tags and then add, remove, or update attributes on that tag. It provides a safe and reliable way to modify the attribute on HTML tags.
More information: https://github.com/WordPress/wordpress-develop/pull/3920.
Props: antonvlasenko, bernhard-reiter, costdev, dmsnell, felixarntz, gziolo, hellofromtonya, zieladam, flixos90, ntsekouras, peterwilsoncc, swissspidy, andrewserong, onemaggie, get_dave, aristath, scruffian, justlevine, andraganescu, noisysocks, dlh, soean, cbirdsong, revgeorge, azaozz.
Fixes #57575.
Built from https://develop.svn.wordpress.org/trunk@55203
git-svn-id: http://core.svn.wordpress.org/trunk@54736 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-02 20:05:17 -05:00
|
|
|
<?php
|
|
|
|
/**
|
2023-05-09 07:19:21 -04:00
|
|
|
* HTML API: WP_HTML_Attribute_Token class
|
Introduce HTML API with HTML Tag Processor
This commit pulls in the HTML Tag Processor from the Gutenbeg repository.
The Tag Processor attempts to be an HTML5-spec-compliant parser that provides the ability in PHP to find specific HTML tags and then add, remove, or update attributes on that tag. It provides a safe and reliable way to modify the attribute on HTML tags.
More information: https://github.com/WordPress/wordpress-develop/pull/3920.
Props: antonvlasenko, bernhard-reiter, costdev, dmsnell, felixarntz, gziolo, hellofromtonya, zieladam, flixos90, ntsekouras, peterwilsoncc, swissspidy, andrewserong, onemaggie, get_dave, aristath, scruffian, justlevine, andraganescu, noisysocks, dlh, soean, cbirdsong, revgeorge, azaozz.
Fixes #57575.
Built from https://develop.svn.wordpress.org/trunk@55203
git-svn-id: http://core.svn.wordpress.org/trunk@54736 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-02 20:05:17 -05:00
|
|
|
*
|
|
|
|
* @package WordPress
|
|
|
|
* @subpackage HTML-API
|
|
|
|
* @since 6.2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
2023-05-09 07:19:21 -04:00
|
|
|
* Core class used by the HTML tag processor as a data structure for the attribute token,
|
|
|
|
* allowing to drastically improve performance.
|
Introduce HTML API with HTML Tag Processor
This commit pulls in the HTML Tag Processor from the Gutenbeg repository.
The Tag Processor attempts to be an HTML5-spec-compliant parser that provides the ability in PHP to find specific HTML tags and then add, remove, or update attributes on that tag. It provides a safe and reliable way to modify the attribute on HTML tags.
More information: https://github.com/WordPress/wordpress-develop/pull/3920.
Props: antonvlasenko, bernhard-reiter, costdev, dmsnell, felixarntz, gziolo, hellofromtonya, zieladam, flixos90, ntsekouras, peterwilsoncc, swissspidy, andrewserong, onemaggie, get_dave, aristath, scruffian, justlevine, andraganescu, noisysocks, dlh, soean, cbirdsong, revgeorge, azaozz.
Fixes #57575.
Built from https://develop.svn.wordpress.org/trunk@55203
git-svn-id: http://core.svn.wordpress.org/trunk@54736 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-02-02 20:05:17 -05:00
|
|
|
*
|
|
|
|
* This class is for internal usage of the WP_HTML_Tag_Processor class.
|
|
|
|
*
|
|
|
|
* @access private
|
|
|
|
* @since 6.2.0
|
|
|
|
*
|
|
|
|
* @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;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The string offset after the attribute value or its name.
|
|
|
|
*
|
|
|
|
* @since 6.2.0
|
|
|
|
* @var int
|
|
|
|
*/
|
|
|
|
public $end;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Whether the attribute is a boolean attribute with value `true`.
|
|
|
|
*
|
|
|
|
* @since 6.2.0
|
|
|
|
* @var bool
|
|
|
|
*/
|
|
|
|
public $is_true;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*
|
|
|
|
* @since 6.2.0
|
|
|
|
*
|
|
|
|
* @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 $end The string offset after the attribute value or its name.
|
|
|
|
* @param bool $is_true Whether the attribute is a boolean attribute with true value.
|
|
|
|
*/
|
|
|
|
public function __construct( $name, $value_start, $value_length, $start, $end, $is_true ) {
|
|
|
|
$this->name = $name;
|
|
|
|
$this->value_starts_at = $value_start;
|
|
|
|
$this->value_length = $value_length;
|
|
|
|
$this->start = $start;
|
|
|
|
$this->end = $end;
|
|
|
|
$this->is_true = $is_true;
|
|
|
|
}
|
|
|
|
}
|