From 58f73d914b050627aef9838ebebb68f845cbcee5 Mon Sep 17 00:00:00 2001 From: Dave Mc Nicoll Date: Thu, 22 Dec 2022 14:35:26 +0000 Subject: [PATCH] - Some more documentation made / fixed --- docs/01-echoing.md | 4 ++-- docs/03-method-request.md | 0 docs/10-extension-custom.md | 4 ++++ docs/10-extension-json.md | 4 ++++ src/Extension/JsonExtension.php | 4 ++-- src/Extension/MoneyExtension.php | 13 +++++++------ src/Extension/TitleExtension.php | 18 +++++++----------- src/Extension/UrlExtension.php | 23 ++++++++++++----------- src/Method/Request.php | 20 +++++++++++--------- 9 files changed, 49 insertions(+), 41 deletions(-) create mode 100644 docs/03-method-request.md create mode 100644 docs/10-extension-custom.md diff --git a/docs/01-echoing.md b/docs/01-echoing.md index b5510ab..0d4e63d 100644 --- a/docs/01-echoing.md +++ b/docs/01-echoing.md @@ -30,7 +30,7 @@ Using `print` or `echo`, which are, by default, made safer by using PHP's native **[PHP]** Would yield internally: -```php +```html @@ -63,7 +63,7 @@ Those tokens represents the equivalent of the printf() function from PHP. **[PHP]** Would render internally as : -```php +```html flags}), ENT_QUOTES, 'UTF-8') ?>"; + return ""; } $cls = static::class; @@ -32,7 +32,7 @@ class JsonExtension implements Extension, FunctionExtension { { return [ 'json' => function($arguments, ? int $flags = null) { - return json_encode($arguments, \JSON_FORCE_OBJECT); + return json_encode($arguments, $flags ?? $this->flags); }, ]; } diff --git a/src/Extension/MoneyExtension.php b/src/Extension/MoneyExtension.php index 2c8f044..f572271 100644 --- a/src/Extension/MoneyExtension.php +++ b/src/Extension/MoneyExtension.php @@ -4,7 +4,7 @@ namespace Picea\Extension; use Picea\Compiler\Context; -class MoneyExtension implements Extension { +class MoneyExtension implements Extension, FunctionExtension { public string $token = "money"; @@ -14,17 +14,18 @@ class MoneyExtension implements Extension { public \NumberFormatter $formatter; - public function __construct(Context $context) { - $this->register($context); + public function __construct() { $this->locale = explode('.', \Locale::getDefault())[0]; $this->formatter = new \NumberFormatter($this->locale, \NumberFormatter::CURRENCY); } - public function register(Context $context) : void + public function exportFunctions(): array { - $context->pushFunction("money", [ $this, 'money' ]); + return [ + "money" => [ $this, 'money' ] + ]; } - + public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) { return ""; } diff --git a/src/Extension/TitleExtension.php b/src/Extension/TitleExtension.php index 4896441..8c521df 100644 --- a/src/Extension/TitleExtension.php +++ b/src/Extension/TitleExtension.php @@ -2,23 +2,19 @@ namespace Picea\Extension; -use Picea\Compiler\Context; - -class TitleExtension implements Extension { +class TitleExtension implements Extension, FunctionExtension { public string $token = "title"; public string $title = ""; - - public function __construct(Context $context) { - $this->register($context); + + public function exportFunctions(): array + { + return [ + "title" => [$this, 'handleTitle'], + ]; } - public function register(Context $context) : void - { - $context->pushFunction("title", [ $this, 'handleTitle' ]); - } - public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) { return ""; } diff --git a/src/Extension/UrlExtension.php b/src/Extension/UrlExtension.php index 1f17928..1404b0c 100644 --- a/src/Extension/UrlExtension.php +++ b/src/Extension/UrlExtension.php @@ -4,7 +4,7 @@ namespace Picea\Extension; use Picea\Compiler\Context; -class UrlExtension implements Extension { +class UrlExtension implements Extension, FunctionExtension { public const URLIZE_PATTERN_URL = <<)(?=[^\w/._\-&])~s @@ -24,10 +24,9 @@ PATTERN; public array $tokens = [ "url" , "route", "route.cacheless", "asset", "url.current", "url.parameters", "slug" ]; - public function __construct(Context $context, string $urlBase = "", string $assetToken = "") { + public function __construct(string $urlBase = "", string $assetToken = "") { $this->urlBase = trim($urlBase, "/"); $this->assetToken = $assetToken; - $this->register($context); } public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) : ?string @@ -54,15 +53,17 @@ PATTERN; return null; } - - public function register(Context $context) : void + + public function exportFunctions(): array { - $context->pushFunction("url", [ $this, 'buildUrl' ]); - $context->pushFunction("current_url", [ $this, 'currentUrl' ]); - $context->pushFunction("asset", [ $this, 'buildAssetUrl' ]); - $context->pushFunction("route", [ $this, 'buildRouteUrl' ]); - $context->pushFunction("slug", [ $this, 'slug' ]); - $context->pushFunction("urlize", [ $this, 'urlize' ]); + return [ + "url" => [ $this, 'buildUrl' ], + "current_url" => [ $this, 'currentUrl' ], + "asset" => [ $this, 'buildAssetUrl' ], + "route" => [ $this, 'buildRouteUrl' ], + "slug" => [ $this, 'slug' ], + "urlize" => [ $this, 'urlize' ] + ]; } public function getRouteList(bool $full = false) : array diff --git a/src/Method/Request.php b/src/Method/Request.php index 250dae0..ed41b9d 100644 --- a/src/Method/Request.php +++ b/src/Method/Request.php @@ -7,10 +7,11 @@ use Picea\Extension\Extension, use Picea\Compiler\Context; +use Picea\Extension\FunctionExtension; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ServerRequestInterface; -class Request implements Extension { +class Request implements Extension, FunctionExtension { use ExtensionTrait; public array $tokens; @@ -21,20 +22,21 @@ class Request implements Extension { public function __construct(ServerRequestInterface $request, Context $context) { $this->request = $request; - $this->register($context); } public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) : string { } - public function register(Context $context) : void + public function exportFunctions(): array { - $context->pushFunction("cookie", [ $this, 'cookie' ]); - $context->pushFunction("get", [ $this, 'get' ]); - $context->pushFunction("post", [ $this, 'post' ]); - $context->pushFunction("request", [ $this, 'request' ]); - $context->pushFunction("server", [ $this, 'server' ]); + return [ + "cookie" => [ $this, 'cookie' ], + "get" => [ $this, 'get' ], + "post" => [ $this, 'post' ], + "request" => [ $this, 'request' ], + "server" => [ $this, 'server' ], + ]; } - + public function cookie(? string $variableName = null, $default = null) { return $variableName === null ? $this->request->getCookieParams() : static::arrayGet($this->request->getCookieParams(), $variableName) ?? $default;