144 lines
3.3 KiB
PHP
144 lines
3.3 KiB
PHP
<?php
|
|
/**
|
|
* HTML API: WP_HTML_Processor_State class
|
|
*
|
|
* @package WordPress
|
|
* @subpackage HTML-API
|
|
* @since 6.4.0
|
|
*/
|
|
|
|
/**
|
|
* Core class used by the HTML processor during HTML parsing
|
|
* for managing the internal parsing state.
|
|
*
|
|
* This class is designed for internal use by the HTML processor.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @access private
|
|
*
|
|
* @see WP_HTML_Processor
|
|
*/
|
|
class WP_HTML_Processor_State {
|
|
/*
|
|
* Insertion mode constants.
|
|
*
|
|
* These constants exist and are named to make it easier to
|
|
* discover and recognize the supported insertion modes in
|
|
* the parser.
|
|
*
|
|
* Out of all the possible insertion modes, only those
|
|
* supported by the parser are listed here. As support
|
|
* is added to the parser for more modes, add them here
|
|
* following the same naming and value pattern.
|
|
*
|
|
* @see https://html.spec.whatwg.org/#the-insertion-mode
|
|
*/
|
|
|
|
/**
|
|
* Initial insertion mode for full HTML parser.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @see https://html.spec.whatwg.org/#the-initial-insertion-mode
|
|
* @see WP_HTML_Processor_State::$insertion_mode
|
|
*
|
|
* @var string
|
|
*/
|
|
const INSERTION_MODE_INITIAL = 'insertion-mode-initial';
|
|
|
|
/**
|
|
* In body insertion mode for full HTML parser.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @see https://html.spec.whatwg.org/#parsing-main-inbody
|
|
* @see WP_HTML_Processor_State::$insertion_mode
|
|
*
|
|
* @var string
|
|
*/
|
|
const INSERTION_MODE_IN_BODY = 'insertion-mode-in-body';
|
|
|
|
/**
|
|
* Tracks open elements while scanning HTML.
|
|
*
|
|
* This property is initialized in the constructor and never null.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @see https://html.spec.whatwg.org/#stack-of-open-elements
|
|
*
|
|
* @var WP_HTML_Open_Elements
|
|
*/
|
|
public $stack_of_open_elements = null;
|
|
|
|
/**
|
|
* Tracks open formatting elements, used to handle mis-nested formatting element tags.
|
|
*
|
|
* This property is initialized in the constructor and never null.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @see https://html.spec.whatwg.org/#list-of-active-formatting-elements
|
|
*
|
|
* @var WP_HTML_Active_Formatting_Elements
|
|
*/
|
|
public $active_formatting_elements = null;
|
|
|
|
/**
|
|
* Refers to the currently-matched tag, if any.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @var WP_HTML_Token|null
|
|
*/
|
|
public $current_token = null;
|
|
|
|
/**
|
|
* Tree construction insertion mode.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @see https://html.spec.whatwg.org/#insertion-mode
|
|
*
|
|
* @var string
|
|
*/
|
|
public $insertion_mode = self::INSERTION_MODE_INITIAL;
|
|
|
|
/**
|
|
* Context node initializing fragment parser, if created as a fragment parser.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @see https://html.spec.whatwg.org/#concept-frag-parse-context
|
|
*
|
|
* @var [string, array]|null
|
|
*/
|
|
public $context_node = null;
|
|
|
|
/**
|
|
* The frameset-ok flag indicates if a `FRAMESET` element is allowed in the current state.
|
|
*
|
|
* > The frameset-ok flag is set to "ok" when the parser is created. It is set to "not ok" after certain tokens are seen.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @see https://html.spec.whatwg.org/#frameset-ok-flag
|
|
*
|
|
* @var bool
|
|
*/
|
|
public $frameset_ok = true;
|
|
|
|
/**
|
|
* Constructor - creates a new and empty state value.
|
|
*
|
|
* @since 6.4.0
|
|
*
|
|
* @see WP_HTML_Processor
|
|
*/
|
|
public function __construct() {
|
|
$this->stack_of_open_elements = new WP_HTML_Open_Elements();
|
|
$this->active_formatting_elements = new WP_HTML_Active_Formatting_Elements();
|
|
}
|
|
}
|