From ccf9231c43c8d47ffcdb32604cd8a535422f2fda Mon Sep 17 00:00:00 2001 From: Justin Foell <630830+jrfoell@users.noreply.github.com> Date: Fri, 24 Sep 2021 10:26:48 -0500 Subject: [PATCH] Add transforms for routes --- src/WPStrava/Blocks/Route.php | 3 ++- src/blocks/route/index.js | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/WPStrava/Blocks/Route.php b/src/WPStrava/Blocks/Route.php index 98affcd..59e8410 100644 --- a/src/WPStrava/Blocks/Route.php +++ b/src/WPStrava/Blocks/Route.php @@ -48,6 +48,7 @@ class WPStrava_Blocks_Route implements WPStrava_Blocks_Interface { ), ) ); + add_action( 'wp_footer', array( $this, 'print_scripts' ) ); } @@ -68,7 +69,7 @@ class WPStrava_Blocks_Route implements WPStrava_Blocks_Interface { $this->add_script = true; $matches = array(); - preg_match( '/\/routes\/([0-9].*)$/', $attributes['url'], $matches ); + preg_match( '#/routes/([0-9].*)$#', $attributes['url'], $matches ); if ( $matches[1] ) { // Transform from block attributes to shortcode standard. $attributes = array( diff --git a/src/blocks/route/index.js b/src/blocks/route/index.js index 70a50a1..70c398b 100644 --- a/src/blocks/route/index.js +++ b/src/blocks/route/index.js @@ -1,9 +1,27 @@ /* global wp, wpStrava */ -import { registerBlockType } from '@wordpress/blocks'; +import { registerBlockType, createBlock } from '@wordpress/blocks'; import edit from './edit'; import metadata from './block.json'; metadata.edit = edit; metadata.save = () => null; +metadata.transforms = { + from: [ + { + type: "raw", + priority: 10, + isMatch: ( node ) => + node.nodeName === "P" && + node.innerText.startsWith( "https://www.strava.com/routes/" ), + + transform: function( node ) { + return createBlock( metadata.name, { + url: node.innerText, + } ); + } + } + ] +}; + registerBlockType( metadata.name, metadata );