From c27a72c438723c5c4088803289b2fcdf6095ec73 Mon Sep 17 00:00:00 2001 From: Awilum Date: Wed, 22 Apr 2020 23:44:11 +0300 Subject: [PATCH] feat(core): add Serializer and Parsers for data encoding/decoding/parsing. #424 --- src/flextype/core/Entries/Entries.php | 13 +++++++---- src/flextype/core/Parsers/Parser.php | 32 +++++---------------------- 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/src/flextype/core/Entries/Entries.php b/src/flextype/core/Entries/Entries.php index 57d3bc31..94fc48ed 100755 --- a/src/flextype/core/Entries/Entries.php +++ b/src/flextype/core/Entries/Entries.php @@ -234,15 +234,20 @@ class Entries foreach ($entry_decoded['parsers'] as $parser_name => $parser_data) { if (in_array($parser_name, ['markdown', 'shortcodes'])) { if (isset($entry_decoded['parsers'][$parser_name]['enabled']) && $entry_decoded['parsers'][$parser_name]['enabled'] === true) { + if (isset($entry_decoded['parsers'][$parser_name]['cache']) && $entry_decoded['parsers'][$parser_name]['cache'] === true) { + $cache = true; + } else { + $cache = false; + } if (isset($entry_decoded['parsers'][$parser_name]['fields'])) { if (is_array($entry_decoded['parsers'][$parser_name]['fields'])) { foreach ($entry_decoded['parsers'][$parser_name]['fields'] as $field) { if (! in_array($field, $this->system_fields)) { if ($parser_name == 'markdown') { - $entry_decoded[$field] = $this->flextype['parser']->decode($entry_decoded[$field], 'markdown'); + $entry_decoded[$field] = $this->flextype['parser']->parse($entry_decoded[$field], 'markdown', $cache); } if ($parser_name == 'shortcodes') { - $entry_decoded[$field] = $this->flextype['parser']->decode($entry_decoded[$field], 'shortcodes'); + $entry_decoded[$field] = $this->flextype['parser']->parse($entry_decoded[$field], 'shortcodes', $cache); } } } @@ -250,10 +255,10 @@ class Entries foreach ($entry_decoded as $key => $value) { if (! in_array($key, $this->system_fields)) { if ($parser_name == 'markdown') { - $entry_decoded[$key] = $this->flextype['parser']->decode($entry_decoded[$key], 'markdown'); + $entry_decoded[$key] = $this->flextype['parser']->parse($entry_decoded[$key], 'markdown', $cache); } if ($parser_name == 'shortcodes') { - $entry_decoded[$key] = $this->flextype['parser']->decode($entry_decoded[$key], 'shortcodes'); + $entry_decoded[$key] = $this->flextype['parser']->parse($entry_decoded[$key], 'shortcodes', $cache); } } } diff --git a/src/flextype/core/Parsers/Parser.php b/src/flextype/core/Parsers/Parser.php index cd172386..7b1d2cd6 100644 --- a/src/flextype/core/Parsers/Parser.php +++ b/src/flextype/core/Parsers/Parser.php @@ -28,6 +28,10 @@ class Parser 'name' => 'markdown', 'ext' => 'md', ], + 'shortcodes' => [ + 'name' => 'shortcodes', + 'ext' => 'php', + ], ]; /** @@ -54,31 +58,7 @@ class Parser } /** - * Dumps a PHP value to a string CONTENT. - * - * @param mixed $input Content to parse - * @param string $parser Parser type [markdown] - * - * @return mixed PHP value converted to a string CONTENT. - */ - public function encode($input, string $parser) : string - { - switch ($parser) { - case 'markdown': - return $input; - - break; - case 'shortcodes': - return $input; - - break; - default: - break; - } - } - - /** - * Parse INPUT content into a PHP value. + * Parse INPUT content. * * @param string $input Content to parse * @param string $parser Parser type [frontmatter, json, yaml, markdown] @@ -86,7 +66,7 @@ class Parser * * @return mixed The Content converted to a PHP value */ - public function decode(string $input, string $parser, bool $cache = true) + public function parse(string $input, string $parser, bool $cache = true) { switch ($parser) { case 'markdown':