1
0
mirror of https://github.com/flextype/flextype.git synced 2025-08-06 13:16:45 +02:00

feat(shortcodes): update logic for registry shortcode

This commit is contained in:
Awilum
2022-05-26 18:36:00 +03:00
parent 27207dd114
commit dfce91988f
2 changed files with 4 additions and 12 deletions

View File

@@ -28,19 +28,11 @@ parsers()->shortcodes()->addHandler('registry', static function (ShortcodeInterf
return '';
}
$varsDelimeter = ($s->getParameter('varsDelimeter') != null) ? parsers()->shortcodes()->parse($s->getParameter('varsDelimeter')) : ',';
if ($s->getParameter('get') != null) {
$value = $s->getParameter('get');
// Get vars
$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);
$value = parsers()->shortcodes()->parse($s->getParameter('get'));
$default = ($s->getParameter('default') != null) ? parsers()->shortcodes()->parse($s->getParameter('default')) : null;
$result = registry()->get($value, $default);
return is_array($result) ? serializers()->json()->encode($result) : $result;
}

View File

@@ -5,5 +5,5 @@ declare(strict_types=1);
test('[registry] shortcode', function () {
expect(strings(parsers()->shortcodes()->parse("(registry get:'flextype.manifest')"))->isJson())->toBeTrue();
expect(parsers()->shortcodes()->parse("(registry get:'flextype.manifest.name')"))->toBe('Flextype');
expect(parsers()->shortcodes()->parse("(registry get:'flextype.manifest.foo,Default')"))->toBe('Default');
expect(parsers()->shortcodes()->parse("(registry get:'flextype.manifest.foo' default:'Default')"))->toBe('Default');
});