- First task of v2 done, tokens can now have unlimited options attached to it

This commit is contained in:
mcndave committed 2023-02-02 16:46:46 +00:00
1 parent afeb8789b5
commit acd9f8c72e
8 files changed
+82 -41

No files matched your search

+8 -7
View File
@@ -6,21 +6,22 @@ use Picea\Compiler\Context;
class JsonExtension implements Extension, FunctionExtension {
public array $token = [ "json", "json.pretty", "json.html" ];
public array $token = [ "json" ];
public int $flags = JSON_HEX_TAG | \JSON_HEX_QUOT | \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_UNICODE;
public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token)
{
$opt = $context->tokenOptions($token);
$flag = $this->flags;
switch ($token) {
case "json.pretty":
$flag |= \JSON_PRETTY_PRINT;
break;
if ( in_array('pretty', $opt) ) {
$flag |= \JSON_PRETTY_PRINT;
}
case "json.html":
return "<?php echo htmlentities(json_encode($arguments, $flag), ENT_QUOTES, 'UTF-8') ?>";
if ( in_array('html', $opt) ) {
return "<?php echo htmlentities(json_encode($arguments, $flag), ENT_QUOTES, 'UTF-8') ?>";
}
$cls = static::class;
+13 -9
View File
@@ -7,7 +7,7 @@ use Picea\Event\Builder\ClassTemplateRenderSectionDone;
class LanguageExtension implements Extension, FunctionExtension {
public array $tokens = [ "lang", "lang.raw", "_", "_.raw", "language.set" ];
public array $tokens = [ "lang", "_", "language" ];
public string $currentLanguage = "";
@@ -27,8 +27,10 @@ class LanguageExtension implements Extension, FunctionExtension {
public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) : string
{
switch($token) {
case "language.set":
$opt = $context->tokenOptions($token);
switch(explode('.', $token)[0]) {
case "language":
$cls = $this::class;
return <<<PHP
@@ -47,16 +49,18 @@ class LanguageExtension implements Extension, FunctionExtension {
PHP;
case "lang":
if ( in_array('raw', $opt) ) {
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->absoluteLang($arguments) ?>";
}
return "<?php echo htmlspecialchars(\$picea->compiler->getExtensionFromToken('$token')->absoluteLang($arguments), \ENT_QUOTES, ini_get('default_charset'), true) ?>";
case "lang.raw":
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->absoluteLang($arguments) ?>";
case "_":
return "<?php echo htmlspecialchars(\$picea->compiler->getExtensionFromToken('$token')->relativeLang($arguments), \ENT_QUOTES, ini_get('default_charset'), true) ?>";
if ( in_array('raw', $opt) ) {
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->relativeLang($arguments) ?>";
}
case "_.raw":
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->relativeLang($arguments) ?>";
return "<?php echo htmlspecialchars(\$picea->compiler->getExtensionFromToken('$token')->relativeLang($arguments), \ENT_QUOTES, ini_get('default_charset'), true) ?>";
}
return "";
+3 -1
View File
@@ -6,7 +6,7 @@ use Picea\Compiler\Context;
class PrintExtension implements Extension {
public array $token = [ "echo", "echo.raw", "print", "print.raw", "printf", "printf.raw" ];
public array $token = [ "echo", "print", "printf" ];
public int $flag = \ENT_QUOTES;
@@ -20,6 +20,8 @@ class PrintExtension implements Extension {
public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) : string
{
$opt = $context->tokenOptions($token);
switch($token) {
case 'echo':
case 'print':
+10 -9
View File
@@ -22,7 +22,7 @@ PATTERN;
protected array $routesTarget;
public array $tokens = [ "url" , "route", "route.cacheless", "asset", "url.current", "url.parameters", "slug" ];
public array $tokens = [ "url" , "route", "asset", "slug" ];
public function __construct(string $urlBase = "", string $assetToken = "") {
$this->urlBase = trim($urlBase, "/");
@@ -31,6 +31,8 @@ PATTERN;
public function parse(\Picea\Compiler\Context &$context, ?string $arguments, string $token) : ?string
{
$opt = $context->tokenOptions($token);
switch($token) {
case "asset":
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->buildAssetUrl($arguments) ?>";
@@ -39,18 +41,17 @@ PATTERN;
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->buildRouteUrl($arguments) ?>";
case "url":
if ( in_array('parameters', $opt) ) {
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->setUrlParameters($arguments) ?>";
}
elseif ( in_array('current', $opt) ) {
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->currentUrl($arguments) ?>";
}
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->buildUrl($arguments) ?>";
case "url.current":
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->currentUrl($arguments) ?>";
case "url.parameters":
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->setUrlParameters($arguments) ?>";
case "slug":
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->slug($arguments) ?>";
#return \Transliterator::createFromRules(':: Any-Latin;:: NFD;:: [:Nonspacing Mark:] Remove;:: NFC;:: [:Punctuation:] Remove;:: Lower();[:Separator:] > \'-\'')->transliterate( $arguments );
}
return null;