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

feat(support): Simplify parsers and serializers #438

This commit is contained in:
Awilum
2020-07-22 11:16:52 +03:00
parent 5db796ac64
commit 1f078918fc
2 changed files with 77 additions and 38 deletions

View File

@@ -9,11 +9,23 @@ declare(strict_types=1);
namespace Flextype;
use Flextype\Component\Filesystem\Filesystem;
use Flextype\Component\Registry\Registry;
use Flextype\Component\Session\Session;
use Flextype\Foundation\Cache\Cache;
use Flextype\Foundation\Entries;
use Flextype\Foundation\Plugins;
use Flextype\Foundation\Cors;
use Flextype\Foundation\Config;
use Flextype\Support\Parsers\Markdown;
use Flextype\Support\Parsers\Shortcode;
use Flextype\Support\Serializers\Yaml;
use Flextype\Support\Serializers\Json;
use Flextype\Support\Serializers\Frontmatter;
use RuntimeException;
use Slim\App;
use Symfony\Component\Yaml\Yaml as SymfonyYaml;
use Zeuxisoo\Whoops\Provider\Slim\WhoopsMiddleware;
use function array_replace_recursive;
use function date_default_timezone_set;
@@ -61,7 +73,7 @@ if (($default_flextype_settings_content = Filesystem::read($default_flextype_set
if (trim($default_flextype_settings_content) === '') {
$default_flextype_settings['settings'] = [];
} else {
$default_flextype_settings['settings'] = Yaml::decode($default_flextype_settings_content);
$default_flextype_settings['settings'] = SymfonyYaml::parse($default_flextype_settings_content);
}
}
@@ -74,7 +86,7 @@ if (($custom_flextype_settings_content = Filesystem::read($custom_flextype_setti
if (trim($custom_flextype_settings_content) === '') {
$custom_flextype_settings['settings'] = [];
} else {
$custom_flextype_settings['settings'] = Yaml::decode($custom_flextype_settings_content);
$custom_flextype_settings['settings'] = SymfonyYaml::parse($custom_flextype_settings_content);
}
}
@@ -84,7 +96,7 @@ if (($flextype_manifest_content = Filesystem::read($flextype_manifest_file_path)
if (trim($flextype_manifest_content) === '') {
$flextype_manifest['manifest'] = [];
} else {
$flextype_manifest['manifest'] = Yaml::decode($flextype_manifest_content);
$flextype_manifest['manifest'] = SymfonyYaml::parse($flextype_manifest_content);
}
}
@@ -128,13 +140,14 @@ include_once 'dependencies.php';
/**
* Include API ENDPOINTS
*/
include_once 'endpoints/access.php';
include_once 'endpoints/entries.php';
include_once 'endpoints/registry.php';
include_once 'endpoints/config.php';
include_once 'endpoints/files.php';
include_once 'endpoints/folders.php';
include_once 'endpoints/images.php';
include_once 'Endpoints/Utils/errors.php';
include_once 'Endpoints/Utils/access.php';
include_once 'Endpoints/entries.php';
include_once 'Endpoints/registry.php';
include_once 'Endpoints/config.php';
include_once 'Endpoints/files.php';
include_once 'Endpoints/folders.php';
include_once 'Endpoints/images.php';
/**
* Set internal encoding
@@ -164,12 +177,12 @@ date_default_timezone_set($flextype['registry']->get('flextype.settings.timezone
/**
* Init shortocodes
*
* Load Flextype Shortcodes extensions from directory /flextype/shortcodes/ based on settings.shortcodes.extensions array
* Load Flextype Shortcodes extensions from directory /flextype/Support/Parsers/Shortcodes/ based on settings.shortcodes.extensions array
*/
$shortcodes_extensions = $flextype['registry']->get('flextype.settings.shortcodes.extensions');
foreach ($shortcodes_extensions as $shortcodes_extension) {
$shortcodes_extension_file_path = ROOT_DIR . '/src/flextype/Foundation/Parsers/shortcodes/' . $shortcodes_extension . 'ShortcodeExtension.php';
$shortcodes_extension_file_path = ROOT_DIR . '/src/flextype/Foundation/Parsers/Shortcodes/' . $shortcodes_extension . 'ShortcodeExtension.php';
if (! file_exists($shortcodes_extension_file_path)) {
continue;
}

View File

@@ -11,6 +11,16 @@ namespace Flextype;
use Bnf\Slim3Psr15\CallableResolver;
use Cocur\Slugify\Slugify;
use Flextype\Foundation\Cache\Cache;
use Flextype\Foundation\Entries;
use Flextype\Foundation\Plugins;
use Flextype\Foundation\Cors;
use Flextype\Foundation\Config;
use Flextype\Support\Parsers\Markdown;
use Flextype\Support\Parsers\Shortcode;
use Flextype\Support\Serializers\Yaml;
use Flextype\Support\Serializers\Json;
use Flextype\Support\Serializers\Frontmatter;
use Intervention\Image\ImageManager;
use League\Event\Emitter;
use League\Flysystem\Adapter\Local;
@@ -34,29 +44,31 @@ use League\Glide\Responses\SlimResponseFactory;
use League\Glide\ServerFactory;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use ParsedownExtra;
use Thunder\Shortcode\ShortcodeFacade;
use function date;
use function dump;
use function extension_loaded;
use function ucfirst;
/**
* Supply a custom callable resolver, which resolves PSR-15 middlewares.
*/
$flextype['callableResolver'] = static function ($container) {
$flextype['callableResolver'] = function ($container) {
return new CallableResolver($container);
};
/**
* Add registry service to Flextype container
*/
$flextype['registry'] = static function ($container) use ($registry) {
$flextype['registry'] = function ($container) use ($registry) {
return $registry;
};
/**
* Add logger service to Flextype container
*/
$flextype['logger'] = static function ($container) {
$flextype['logger'] = function ($container) {
$logger = new Logger('flextype');
$logger->pushHandler(new StreamHandler(PATH['logs'] . '/' . date('Y-m-d') . '.log'));
@@ -66,14 +78,14 @@ $flextype['logger'] = static function ($container) {
/**
* Add emitter service to Flextype container
*/
$flextype['emitter'] = static function ($container) {
$flextype['emitter'] = function ($container) {
return new Emitter();
};
/**
* Add slugify service to Flextype container
*/
$flextype['slugify'] = static function ($container) {
$flextype['slugify'] = function ($container) {
return new Slugify([
'separator' => $container['registry']->get('flextype.settings.slugify.separator'),
'lowercase' => $container['registry']->get('flextype.settings.slugify.lowercase'),
@@ -87,7 +99,7 @@ $flextype['slugify'] = static function ($container) {
/**
* Adds the cache adapter to the Flextype container
*/
$flextype['cache_adapter'] = static function ($container) use ($flextype) {
$flextype['cache_adapter'] = function ($container) use ($flextype) {
$driver_name = $container['registry']->get('flextype.settings.cache.driver');
if (! $driver_name || $driver_name === 'auto') {
@@ -101,7 +113,7 @@ $flextype['cache_adapter'] = static function ($container) use ($flextype) {
}
$class = ucfirst($driver_name);
$adapter = "Flextype\\Cache\\{$class}Adapter";
$adapter = "Flextype\\Foundation\\Cache\\{$class}Adapter";
return new $adapter($flextype);
};
@@ -109,42 +121,56 @@ $flextype['cache_adapter'] = static function ($container) use ($flextype) {
/**
* Add cache service to Flextype container
*/
$flextype['cache'] = static function ($container) use ($flextype) {
$flextype['cache'] = function ($container) use ($flextype) {
return new Cache($flextype);
};
/**
* Add options service to Flextype container
*/
$flextype['config'] = static function ($container) use ($flextype) {
$flextype['config'] = function ($container) use ($flextype) {
return new Config($flextype);
};
/**
* Add shortcodes service to Flextype container
* Add shortcode parser service to Flextype container
*/
$flextype['shortcodes'] = static function ($container) {
return new ShortcodeFacade();
$flextype['shortcode'] = function ($container) use ($flextype) {
return new Shortcode($flextype, new ShortcodeFacade());
};
/**
* Add serializer service to Flextype container
* Add markdown parser service to Flextype container
*/
$flextype['serializer'] = static function ($container) use ($flextype) {
return new Serializer($flextype);
$flextype['markdown'] = function ($container) use ($flextype) {
return new Markdown($flextype, new ParsedownExtra());
};
/**
* Add parser service to Flextype container
* Add json serializer service to Flextype container
*/
$flextype['parser'] = static function ($container) use ($flextype) {
return new Parser($flextype);
$flextype['json'] = function ($container) use ($flextype) {
return new Json($flextype);
};
/**
* Add yaml serializer service to Flextype container
*/
$flextype['yaml'] = function ($container) use ($flextype) {
return new Yaml($flextype);
};
/**
* Add frontmatter serializer service to Flextype container
*/
$flextype['frontmatter'] = function ($container) use ($flextype) {
return new Frontmatter($flextype);
};
/**
* Add images service to Flextype container
*/
$flextype['images'] = static function ($container) {
$flextype['images'] = function ($container) {
// Get images settings
$imagesSettings = $container->get('settings')['images'];
@@ -199,48 +225,48 @@ $flextype['images'] = static function ($container) {
/**
* Add entries service to Flextype container
*/
$flextype['entries'] = static function ($container) {
$flextype['entries'] = function ($container) {
return new Entries($container);
};
/**
* Add media folders service to Flextype container
*/
$flextype['media_folders'] = static function ($container) use ($flextype, $app) {
$flextype['media_folders'] = function ($container) use ($flextype, $app) {
return new MediaFolders($flextype, $app);
};
/**
* Add media files service to Flextype container
*/
$flextype['media_files'] = static function ($container) use ($flextype, $app) {
$flextype['media_files'] = function ($container) use ($flextype, $app) {
return new MediaFiles($flextype, $app);
};
/**
* Add media folders meta service to Flextype container
*/
$flextype['media_folders_meta'] = static function ($container) use ($flextype, $app) {
$flextype['media_folders_meta'] = function ($container) use ($flextype, $app) {
return new MediaFoldersMeta($flextype, $app);
};
/**
* Add media files meta service to Flextype container
*/
$flextype['media_files_meta'] = static function ($container) use ($flextype, $app) {
$flextype['media_files_meta'] = function ($container) use ($flextype, $app) {
return new MediaFilesMeta($flextype, $app);
};
/**
* Add plugins service to Flextype container
*/
$flextype['plugins'] = static function ($container) use ($flextype, $app) {
$flextype['plugins'] = function ($container) use ($flextype, $app) {
return new Plugins($flextype, $app);
};
/**
* Add cors service to Flextype container
*/
$flextype['cors'] = static function ($container) use ($flextype, $app) {
$flextype['cors'] = function ($container) use ($flextype, $app) {
return new Cors($flextype, $app);
};