From ed4b66f9f528506e9a2366f7f12ac6067c70d053 Mon Sep 17 00:00:00 2001 From: Awilum Date: Wed, 25 May 2022 21:04:33 +0300 Subject: [PATCH] feat(shortcodes): add ability to parse nested shortcodes for `registry` shortcode --- .../core/Parsers/Shortcodes/RegistryShortcode.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/flextype/core/Parsers/Shortcodes/RegistryShortcode.php b/src/flextype/core/Parsers/Shortcodes/RegistryShortcode.php index 8f52ffbd..2a34c838 100644 --- a/src/flextype/core/Parsers/Shortcodes/RegistryShortcode.php +++ b/src/flextype/core/Parsers/Shortcodes/RegistryShortcode.php @@ -21,20 +21,24 @@ use Thunder\Shortcode\Shortcode\ShortcodeInterface; use function parsers; use function registry; -// Shortcode: [registry] +// Shortcode: registry +// Usage: (registry get:flextype.manifest.version) parsers()->shortcodes()->addHandler('registry', static function (ShortcodeInterface $s) { if (! registry()->get('flextype.settings.parsers.shortcodes.shortcodes.registry.enabled')) { return ''; } - $varsDelimeter = $s->getParameter('varsDelimeter') ?: ','; + $varsDelimeter = ($s->getParameter('varsDelimeter') != null) ? parsers()->shortcodes()->parse($s->getParameter('varsDelimeter')) : ','; if ($s->getParameter('get') != null) { + $value = $s->getParameter('get'); + // Get vars - foreach($s->getParameters() as $key => $value) { - $vars = $value !== null ? strings($value)->contains($varsDelimeter) ? explode($varsDelimeter, $value) : [$value] : []; - } + $vars = $value !== null ? strings($value)->contains($varsDelimeter) ? explode($varsDelimeter, $value) : [$value] : []; + + // Parse shortcodes for each var. + $vars = array_map(fn($v) => parsers()->shortcodes()->parse(is_string($v) ? $v : ''), $vars); $result = registry()->get($vars[0], $vars[1] ?? null);