Skip to content

Commit 1c66dd0

Browse files
committed
[Data Liberation] Add HTML to Blocks converter
Adds a basic WP_HTML_To_Blocks class that accepts HTML and outputs block markup. It only considers the markup and won't consider any visual changes introduced via CSS or JavaScript. A part of #1894 ## Example ```html $html = <<<HTML <meta name="post_title" content="My first post"> <p>Hello <b>world</b>!</p> HTML; $converter = new WP_HTML_To_Blocks( $html ); $converter->convert(); var_dump( $converter->get_all_metadata() ); /* * array( 'post_title' => array( 'My first post' ) ) */ var_dump( $converter->get_block_markup() ); /* * <!-- wp:paragraph --> * <p>Hello <b>world</b>!</p> * <!-- /wp:paragraph --> */ ``` ## Testing instructions This PR mostly adds new code. Just confirm the unit tests pass in CI.
1 parent 869f6bd commit 1c66dd0

File tree

13 files changed

+10336
-3
lines changed

13 files changed

+10336
-3
lines changed

packages/playground/data-liberation/bootstrap.php

+5
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,17 @@
4444
require_once __DIR__ . '/src/wordpress-core-html-api/html5-named-character-references.php';
4545
}
4646

47+
require_once __DIR__ . '/src/block-markup/WP_Block_Markup_Converter.php';
4748
require_once __DIR__ . '/src/block-markup/WP_Block_Markup_Processor.php';
4849
require_once __DIR__ . '/src/block-markup/WP_Block_Markup_Url_Processor.php';
4950
require_once __DIR__ . '/src/block-markup/WP_URL_In_Text_Processor.php';
51+
require_once __DIR__ . '/src/block-markup/WP_HTML_To_Blocks.php';
5052
require_once __DIR__ . '/src/block-markup/WP_URL.php';
5153

5254
require_once __DIR__ . '/src/xml-api/WP_XML_Decoder.php';
5355
require_once __DIR__ . '/src/xml-api/WP_XML_Processor.php';
5456
require_once __DIR__ . '/src/wxr/WP_WXR_Reader.php';
57+
require_once __DIR__ . '/src/import/WP_Import_Utils.php';
5558
require_once __DIR__ . '/src/import/WP_Block_Object.php';
5659
require_once __DIR__ . '/src/import/WP_Entity_Importer.php';
5760
require_once __DIR__ . '/src/import/WP_File_Visitor.php';
@@ -64,6 +67,8 @@
6467
require_once __DIR__ . '/src/import/WP_Entity_Iterator_Chain.php';
6568
require_once __DIR__ . '/src/import/WP_Retry_Frontloading_Iterator.php';
6669
require_once __DIR__ . '/src/import/WP_Markdown_Importer.php';
70+
require_once __DIR__ . '/src/entity-readers/WP_Entity_Reader.php';
71+
require_once __DIR__ . '/src/entity-readers/WP_HTML_Entity_Reader.php';
6772

6873
require_once __DIR__ . '/src/utf8_decoder.php';
6974

packages/playground/data-liberation/phpunit.xml

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" bootstrap="bootstrap.php" colors="true" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.0/phpunit.xsd" cacheDirectory=".phpunit.cache">
33
<testsuites>
44
<testsuite name="Application Test Suite">
5+
<file>tests/WPHTMLEntityReaderTests.php</file>
6+
<file>tests/WPHTMLToBlocksTests.php</file>
57
<file>tests/WPWXRReaderTests.php</file>
68
<file>tests/WPRewriteUrlsTests.php</file>
79
<file>tests/WPURLInTextProcessorTests.php</file>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
interface WP_Block_Markup_Converter {
4+
public function convert();
5+
public function get_block_markup();
6+
public function get_all_metadata();
7+
public function get_meta_value( $key );
8+
}

0 commit comments

Comments
 (0)