From d8c3d4c54bf3dd93718c517ff83be8e71e7365a0 Mon Sep 17 00:00:00 2001 From: Roman Axelrod Date: Thu, 8 Dec 2022 05:40:39 +0200 Subject: [PATCH] - Added compile note (date) in PHP bundle. - Update spacings/code-format of PHP bundle. --- platforms/php/build.php | 182 +++++++++--------- .../templates/Template_Component.php | 2 - 2 files changed, 92 insertions(+), 92 deletions(-) diff --git a/platforms/php/build.php b/platforms/php/build.php index 162c10b..0e2d1d8 100644 --- a/platforms/php/build.php +++ b/platforms/php/build.php @@ -9,125 +9,127 @@ use LightnCandy\LightnCandy; use Brick\VarExporter\VarExporter; trait Custom_Handlebars { - public array $custom_handlebars = []; + public array $custom_handlebars = []; - public function register_default_handlebar_helpers() { - $this->add_handlebar( 'esc_url', function ( $context ) { - if ( function_exists( 'esc_url' ) ) { - return esc_url( $context ); - } + public function register_default_handlebar_helpers() { + $this->add_handlebar( 'esc_url', function ( $context ) { + if ( function_exists( 'esc_url' ) ) { + return esc_url( $context ); + } - return $context; - } ); + return $context; + } ); - $this->add_handlebar( 'esc_attr', function ( $context ) { - if ( function_exists( 'esc_attr' ) ) { - return esc_attr( $context ); - } + $this->add_handlebar( 'esc_attr', function ( $context ) { + if ( function_exists( 'esc_attr' ) ) { + return esc_attr( $context ); + } - return $context; - } ); + return $context; + } ); - $this->add_handlebar( 'esc_html', function ( $context ) { - if ( function_exists( 'esc_html' ) ) { - return esc_html( $context ); - } + $this->add_handlebar( 'esc_html', function ( $context ) { + if ( function_exists( 'esc_html' ) ) { + return esc_html( $context ); + } - return $context; - } ); + return $context; + } ); - $this->add_handlebar( 'safe_html', function ( $context ) { - if ( function_exists( 'wp_kses_post' ) ) { - return wp_kses_post( $context ); - } + $this->add_handlebar( 'safe_html', function ( $context ) { + if ( function_exists( 'wp_kses_post' ) ) { + return wp_kses_post( $context ); + } - return $context; - } ); - } + return $context; + } ); + } - public function add_handlebar( $key, $func ) { - $this->custom_handlebars[ $key ] = $func; - } + public function add_handlebar( $key, $func ) { + $this->custom_handlebars[ $key ] = $func; + } } class Component_Builder { - use Custom_Handlebars; - - public string $component_name = ''; - public string $module_path = ''; - public string $project_path = ''; - - function __construct( $component_name, $module_path, $project_path ) { - $this->module_path = $module_path; - $this->project_path = $project_path; - $this->component_name = $component_name; - $this->register_default_handlebar_helpers(); - } - - function build(): void { - $root_path = __DIR__ . '/' . $this->module_path . '/../../' . $this->project_path; - - $this->buildTemplatePhpFile( $root_path ); - } - - private function buildTemplatePhpFile( $root_path ) { - $file_name = $this->get_handlebars_template( "$root_path/src/$this->component_name.template.hbs" ); - - $output_folder = $root_path . '/exports/wordpress/templates'; - rename( $file_name, "$output_folder/$this->component_name.template.php" ); - } - - private function get_handlebars_template( $path = '' ): string { - $template = file_get_contents( $path ); - $phpStr = LightnCandy::compile( $template, - [ - 'flags' => Flags::FLAG_NOESCAPE | Flags::FLAG_PARENT | Flags::FLAG_SPVARS | Flags::FLAG_ELSE | Flags::FLAG_JSLENGTH | Flags::FLAG_JSTRUE, - 'helpers' => $this->custom_handlebars ?? [], - ] - ); - - /** - * NOTE: - * PHP 8.0.0 has problems with the LightCandy lib. - * If you're running the exact php8.0.0 version, try to downgrade to LightCandy@1.2.5. - */ - - return self::create_cache_file( $path, $phpStr ); - } - - private static function create_cache_file( string $file_path, string $content ): string { - $file_path_parts = explode( ".", $file_path ); - array_pop( $file_path_parts ); // remove ".hbs" format. - $file_path_parts[] = 'php'; - $file_path = join( '.', $file_path_parts ); - - $comment = " + use Custom_Handlebars; + + public string $component_name = ''; + public string $module_path = ''; + public string $project_path = ''; + + function __construct( $component_name, $module_path, $project_path ) { + $this->module_path = $module_path; + $this->project_path = $project_path; + $this->component_name = $component_name; + $this->register_default_handlebar_helpers(); + } + + function build(): void { + $root_path = __DIR__ . '/' . $this->module_path . '/../../' . $this->project_path; + + $this->buildTemplatePhpFile( $root_path ); + } + + private function buildTemplatePhpFile( $root_path ) { + $file_name = $this->get_handlebars_template( "$root_path/src/$this->component_name.template.hbs" ); + + $output_folder = $root_path . '/exports/wordpress/templates'; + rename( $file_name, "$output_folder/$this->component_name.template.php" ); + } + + private function get_handlebars_template( $path = '' ): string { + $template = file_get_contents( $path ); + $phpStr = LightnCandy::compile( $template, + [ + 'flags' => Flags::FLAG_NOESCAPE | Flags::FLAG_PARENT | Flags::FLAG_SPVARS | Flags::FLAG_ELSE | Flags::FLAG_JSLENGTH | Flags::FLAG_JSTRUE, + 'helpers' => $this->custom_handlebars ?? [], + ] + ); + + /** + * NOTE: + * PHP 8.0.0 has problems with the LightCandy lib. + * If you're running the exact php8.0.0 version, try to downgrade to LightCandy@1.2.5. + */ + + return self::create_cache_file( $path, $phpStr ); + } + + private static function create_cache_file( string $file_path, string $content ): string { + $file_path_parts = explode( ".", $file_path ); + array_pop( $file_path_parts ); // remove ".hbs" format. + $file_path_parts[] = 'php'; + $file_path = join( '.', $file_path_parts ); + + $comment = " /** * FILE INFO: * This file was generated by LightCandy::compile function. * The original source is the .HBS(handlebars) file that is located next to this generated PHP file. + * + * Compiled at " . date( 'Y-m-d h:i:s' ) . " */ "; - $t = file_put_contents( $file_path, '' ); - if ( $t === false ) { - die( "Error: Can't generate HBS template to PHP file. Cache folder is not accessible." ); - } + $t = file_put_contents( $file_path, '' ); + if ( $t === false ) { + die( "Error: Can't generate HBS template to PHP file. Cache folder is not accessible." ); + } - return $file_path; - } + return $file_path; + } } function build( $args = [] ) { - ( new Component_Builder( $args['blockName'], $args['backPath'], $args['projectPath'] ) )->build(); + ( new Component_Builder( $args['blockName'], $args['backPath'], $args['projectPath'] ) )->build(); } /** * @throws ExportException */ function jsonToPhp( $args = [] ): ?string { - $json = $args['json'] ?? []; + $json = $args['json'] ?? []; - return VarExporter::export( $json ); + return VarExporter::export( $json ); } diff --git a/platforms/wordpress/templates/Template_Component.php b/platforms/wordpress/templates/Template_Component.php index ef39d78..ed0f3df 100644 --- a/platforms/wordpress/templates/Template_Component.php +++ b/platforms/wordpress/templates/Template_Component.php @@ -13,7 +13,6 @@ class <%= blockClassModel %>_Component extends \Core\Component { return apply_filters( 'axeweb_blocks/<%= ownerFilename %>/<%= blockFilename %>::content', $output ); } - <% if (!include_acf_block && !include_native_gutenberg_block) { %>function register_assets(): void { $version = get_plugin_data( __DIR__ . "/../../scytale-custom-blocks.php" )['Version']; // In Plugins // $version = \Core\Global_Functions::get_current_version_number(); // In Theme @@ -62,7 +61,6 @@ class <%= blockClassModel %>_Component extends \Core\Component { ); } );<% } %> }<% } %> - } <%= blockClassModel %>_Component::get_instance();