WP_HTML_Processor::step_in_column_group(): bool

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness. Use https://html.spec.whatwg.org/#parsing-main-incolgroup instead.

Parses next element in the ‘in column group’ insertion mode.

Description

This internal function performs the ‘in column group’ insertion mode logic for the generalized WP_HTML_Processor::step() function.

See also

Return

bool Whether an element was found.

Source

private function step_in_column_group(): bool {
	$token_name = $this->get_token_name();
	$token_type = $this->get_token_type();
	$op_sigil   = '#tag' === $token_type ? ( parent::is_tag_closer() ? '-' : '+' ) : '';
	$op         = "{$op_sigil}{$token_name}";

	switch ( $op ) {
		/*
		 * > A character token that is one of U+0009 CHARACTER TABULATION, U+000A LINE FEED (LF),
		 * > U+000C FORM FEED (FF), U+000D CARRIAGE RETURN (CR), or U+0020 SPACE
		 */
		case '#text':
			if ( parent::TEXT_IS_WHITESPACE === $this->text_node_classification ) {
				// Insert the character.
				$this->insert_html_element( $this->state->current_token );
				return true;
			}

			goto in_column_group_anything_else;
			break;

		/*
		 * > A comment token
		 */
		case '#comment':
		case '#funky-comment':
		case '#presumptuous-tag':
			$this->insert_html_element( $this->state->current_token );
			return true;

		/*
		 * > A DOCTYPE token
		 */
		case 'html':
			// @todo Indicate a parse error once it's possible.
			return $this->step();

		/*
		 * > A start tag whose tag name is "html"
		 */
		case '+HTML':
			return $this->step_in_body();

		/*
		 * > A start tag whose tag name is "col"
		 */
		case '+COL':
			$this->insert_html_element( $this->state->current_token );
			$this->state->stack_of_open_elements->pop();
			return true;

		/*
		 * > An end tag whose tag name is "colgroup"
		 */
		case '-COLGROUP':
			if ( ! $this->state->stack_of_open_elements->current_node_is( 'COLGROUP' ) ) {
				// @todo Indicate a parse error once it's possible.
				return $this->step();
			}
			$this->state->stack_of_open_elements->pop();
			$this->state->insertion_mode = WP_HTML_Processor_State::INSERTION_MODE_IN_TABLE;
			return true;

		/*
		 * > An end tag whose tag name is "col"
		 */
		case '-COL':
			// Parse error: ignore the token.
			return $this->step();

		/*
		 * > A start tag whose tag name is "template"
		 * > An end tag whose tag name is "template"
		 */
		case '+TEMPLATE':
		case '-TEMPLATE':
			return $this->step_in_head();
	}

	in_column_group_anything_else:
	/*
	 * > Anything else
	 */
	if ( ! $this->state->stack_of_open_elements->current_node_is( 'COLGROUP' ) ) {
		// @todo Indicate a parse error once it's possible.
		return $this->step();
	}
	$this->state->stack_of_open_elements->pop();
	$this->state->insertion_mode = WP_HTML_Processor_State::INSERTION_MODE_IN_TABLE;
	return $this->step( self::REPROCESS_CURRENT_NODE );
}

Changelog

VersionDescription
6.7.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.