mirrored from git://develop.git.wordpress.org/
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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: #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. git-svn-id: https://develop.svn.wordpress.org/trunk@55203 602fd350-edb4-49c9-b593-d223f7449a82
- Loading branch information
Showing
7 changed files
with
4,865 additions
and
0 deletions.
There are no files selected for viewing
89 changes: 89 additions & 0 deletions
89
src/wp-includes/html-api/class-wp-html-attribute-token.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
<?php | ||
/** | ||
* HTML Tag Processor: Attribute token structure class. | ||
* | ||
* @package WordPress | ||
* @subpackage HTML-API | ||
* @since 6.2.0 | ||
*/ | ||
|
||
/** | ||
* Data structure for the attribute token that allows to drastically improve performance. | ||
* | ||
* 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; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
<?php | ||
/** | ||
* HTML Span: Represents a textual span inside an HTML document. | ||
* | ||
* @package WordPress | ||
* @subpackage HTML-API | ||
* @since 6.2.0 | ||
*/ | ||
|
||
/** | ||
* Represents a textual span inside an HTML document. | ||
* | ||
* This is a two-tuple in disguise, used to avoid the memory | ||
* overhead involved in using an array for the same purpose. | ||
* | ||
* 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_Span { | ||
/** | ||
* Byte offset into document where span begins. | ||
* | ||
* @since 6.2.0 | ||
* @var int | ||
*/ | ||
public $start; | ||
|
||
/** | ||
* Byte offset into document where span ends. | ||
* | ||
* @since 6.2.0 | ||
* @var int | ||
*/ | ||
public $end; | ||
|
||
/** | ||
* Constructor. | ||
* | ||
* @since 6.2.0 | ||
* | ||
* @param int $start Byte offset into document where replacement span begins. | ||
* @param int $end Byte offset into document where replacement span ends. | ||
*/ | ||
public function __construct( $start, $end ) { | ||
$this->start = $start; | ||
$this->end = $end; | ||
} | ||
} |
Oops, something went wrong.