From 9f7555f5d5095ba1951233f0e9e3eeefd7b1dfc8 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Tue, 27 Jun 2023 00:45:38 +0000 Subject: [PATCH] Editor: Update block-serialization-default-parser package for WP 6.3 Beta 1. Update the `@wordpress/block-serialization-default-parser` to 4.35.1 for WordPress 6.3 Beta 1. These changes split the following classes in to their own files in order to match the WordPress PHP coding standards: * `WP_Block_Parser_Block` * `WP_Block_Parser_Frame` * `WP_Block_Parser` These classes were previously all included in the `src/wp-includes/class-wp-block-parser.php` file. In order to maintain backward compatibly for developers requiring the file directly, the relocated classes are replaced with `require_once` calls in the original file. In order to retain the commit history of the new files, they have been created using the `svn copy` command. Props aristath, rajanpanchal2028, jrf, SergeyBiryukov, costdev, manfcarlo, spacedmonkey, mukesh27, isabel_brison, dd32. Fixes #57832. See #58623. Built from https://develop.svn.wordpress.org/trunk@56048 git-svn-id: http://core.svn.wordpress.org/trunk@55560 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/class-wp-block-parser-block.php | 90 ++++++++++ wp-includes/class-wp-block-parser-frame.php | 78 +++++++++ wp-includes/class-wp-block-parser.php | 176 ++------------------ wp-includes/version.php | 2 +- wp-settings.php | 2 + 5 files changed, 188 insertions(+), 160 deletions(-) create mode 100644 wp-includes/class-wp-block-parser-block.php create mode 100644 wp-includes/class-wp-block-parser-frame.php diff --git a/wp-includes/class-wp-block-parser-block.php b/wp-includes/class-wp-block-parser-block.php new file mode 100644 index 0000000000..28377d3ede --- /dev/null +++ b/wp-includes/class-wp-block-parser-block.php @@ -0,0 +1,90 @@ + 3 ) + * + * @since 5.0.0 + * @var array|null + */ + public $attrs; + + /** + * List of inner blocks (of this same class) + * + * @since 5.0.0 + * @var WP_Block_Parser_Block[] + */ + public $innerBlocks; // phpcs:ignore WordPress.NamingConventions.ValidVariableName + + /** + * Resultant HTML from inside block comment delimiters + * after removing inner blocks + * + * @example "...Just testing..." -> "Just testing..." + * + * @since 5.0.0 + * @var string + */ + public $innerHTML; // phpcs:ignore WordPress.NamingConventions.ValidVariableName + + /** + * List of string fragments and null markers where inner blocks were found + * + * @example array( + * 'innerHTML' => 'BeforeInnerAfter', + * 'innerBlocks' => array( block, block ), + * 'innerContent' => array( 'Before', null, 'Inner', null, 'After' ), + * ) + * + * @since 4.2.0 + * @var array + */ + public $innerContent; // phpcs:ignore WordPress.NamingConventions.ValidVariableName + + /** + * Constructor. + * + * Will populate object properties from the provided arguments. + * + * @since 5.0.0 + * + * @param string $name Name of block. + * @param array $attrs Optional set of attributes from block comment delimiters. + * @param array $inner_blocks List of inner blocks (of this same class). + * @param string $inner_html Resultant HTML from inside block comment delimiters after removing inner blocks. + * @param array $inner_content List of string fragments and null markers where inner blocks were found. + */ + public function __construct( $name, $attrs, $inner_blocks, $inner_html, $inner_content ) { + $this->blockName = $name; // phpcs:ignore WordPress.NamingConventions.ValidVariableName + $this->attrs = $attrs; + $this->innerBlocks = $inner_blocks; // phpcs:ignore WordPress.NamingConventions.ValidVariableName + $this->innerHTML = $inner_html; // phpcs:ignore WordPress.NamingConventions.ValidVariableName + $this->innerContent = $inner_content; // phpcs:ignore WordPress.NamingConventions.ValidVariableName + } +} diff --git a/wp-includes/class-wp-block-parser-frame.php b/wp-includes/class-wp-block-parser-frame.php new file mode 100644 index 0000000000..15938dea38 --- /dev/null +++ b/wp-includes/class-wp-block-parser-frame.php @@ -0,0 +1,78 @@ +block = $block; + $this->token_start = $token_start; + $this->token_length = $token_length; + $this->prev_offset = isset( $prev_offset ) ? $prev_offset : $token_start + $token_length; + $this->leading_html_start = $leading_html_start; + } +} diff --git a/wp-includes/class-wp-block-parser.php b/wp-includes/class-wp-block-parser.php index 50337b588a..61f287b21f 100644 --- a/wp-includes/class-wp-block-parser.php +++ b/wp-includes/class-wp-block-parser.php @@ -5,162 +5,6 @@ * @package WordPress */ -/** - * Class WP_Block_Parser_Block - * - * Holds the block structure in memory - * - * @since 5.0.0 - */ -class WP_Block_Parser_Block { - /** - * Name of block - * - * @example "core/paragraph" - * - * @since 5.0.0 - * @var string - */ - public $blockName; - - /** - * Optional set of attributes from block comment delimiters - * - * @example null - * @example array( 'columns' => 3 ) - * - * @since 5.0.0 - * @var array|null - */ - public $attrs; - - /** - * List of inner blocks (of this same class) - * - * @since 5.0.0 - * @var WP_Block_Parser_Block[] - */ - public $innerBlocks; - - /** - * Resultant HTML from inside block comment delimiters - * after removing inner blocks - * - * @example "...Just testing..." -> "Just testing..." - * - * @since 5.0.0 - * @var string - */ - public $innerHTML; - - /** - * List of string fragments and null markers where inner blocks were found - * - * @example array( - * 'innerHTML' => 'BeforeInnerAfter', - * 'innerBlocks' => array( block, block ), - * 'innerContent' => array( 'Before', null, 'Inner', null, 'After' ), - * ) - * - * @since 4.2.0 - * @var array - */ - public $innerContent; - - /** - * Constructor. - * - * Will populate object properties from the provided arguments. - * - * @since 5.0.0 - * - * @param string $name Name of block. - * @param array $attrs Optional set of attributes from block comment delimiters. - * @param array $innerBlocks List of inner blocks (of this same class). - * @param string $innerHTML Resultant HTML from inside block comment delimiters after removing inner blocks. - * @param array $innerContent List of string fragments and null markers where inner blocks were found. - */ - public function __construct( $name, $attrs, $innerBlocks, $innerHTML, $innerContent ) { - $this->blockName = $name; - $this->attrs = $attrs; - $this->innerBlocks = $innerBlocks; - $this->innerHTML = $innerHTML; - $this->innerContent = $innerContent; - } -} - -/** - * Class WP_Block_Parser_Frame - * - * Holds partial blocks in memory while parsing - * - * @internal - * @since 5.0.0 - */ -class WP_Block_Parser_Frame { - /** - * Full or partial block - * - * @since 5.0.0 - * @var WP_Block_Parser_Block - */ - public $block; - - /** - * Byte offset into document for start of parse token - * - * @since 5.0.0 - * @var int - */ - public $token_start; - - /** - * Byte length of entire parse token string - * - * @since 5.0.0 - * @var int - */ - public $token_length; - - /** - * Byte offset into document for after parse token ends - * (used during reconstruction of stack into parse production) - * - * @since 5.0.0 - * @var int - */ - public $prev_offset; - - /** - * Byte offset into document where leading HTML before token starts - * - * @since 5.0.0 - * @var int - */ - public $leading_html_start; - - /** - * Constructor - * - * Will populate object properties from the provided arguments. - * - * @since 5.0.0 - * - * @param WP_Block_Parser_Block $block Full or partial block. - * @param int $token_start Byte offset into document for start of parse token. - * @param int $token_length Byte length of entire parse token string. - * @param int $prev_offset Byte offset into document for after parse token ends. - * @param int $leading_html_start Byte offset into document where leading HTML before token starts. - */ - public function __construct( $block, $token_start, $token_length, $prev_offset = null, $leading_html_start = null ) { - $this->block = $block; - $this->token_start = $token_start; - $this->token_length = $token_length; - $this->prev_offset = isset( $prev_offset ) ? $prev_offset : $token_start + $token_length; - $this->leading_html_start = $leading_html_start; - } -} - /** * Class WP_Block_Parser * @@ -470,11 +314,11 @@ class WP_Block_Parser { * @internal * @since 3.9.0 * - * @param string $innerHTML HTML content of block. + * @param string $inner_html HTML content of block. * @return WP_Block_Parser_Block freeform block object. */ - public function freeform( $innerHTML ) { - return new WP_Block_Parser_Block( null, $this->empty_attrs, array(), $innerHTML, array( $innerHTML ) ); + public function freeform( $inner_html ) { + return new WP_Block_Parser_Block( null, $this->empty_attrs, array(), $inner_html, array( $inner_html ) ); } /** @@ -553,3 +397,17 @@ class WP_Block_Parser { $this->output[] = (array) $stack_top->block; } } + +/** + * WP_Block_Parser_Block class. + * + * Required for backward compatibility in WordPress Core. + */ +require_once __DIR__ . '/class-wp-block-parser-block.php'; + +/** + * WP_Block_Parser_Frame class. + * + * Required for backward compatibility in WordPress Core. + */ +require_once __DIR__ . '/class-wp-block-parser-frame.php'; diff --git a/wp-includes/version.php b/wp-includes/version.php index d6b0ef0787..07931d93bb 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.3-alpha-56047'; +$wp_version = '6.3-alpha-56048'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema. diff --git a/wp-settings.php b/wp-settings.php index f1c1e0cd37..3b59004ada 100644 --- a/wp-settings.php +++ b/wp-settings.php @@ -318,6 +318,8 @@ require ABSPATH . WPINC . '/class-wp-block-styles-registry.php'; require ABSPATH . WPINC . '/class-wp-block-type-registry.php'; require ABSPATH . WPINC . '/class-wp-block.php'; require ABSPATH . WPINC . '/class-wp-block-list.php'; +require ABSPATH . WPINC . '/class-wp-block-parser-block.php'; +require ABSPATH . WPINC . '/class-wp-block-parser-frame.php'; require ABSPATH . WPINC . '/class-wp-block-parser.php'; require ABSPATH . WPINC . '/blocks.php'; require ABSPATH . WPINC . '/blocks/index.php';