- Work on Language Handler and extension.

- Added an URL extension which allows routes and URLs.
- Fixed some bug within ClassTemplate
This commit is contained in:
mcndave committed 2020-01-23 15:28:05 -05:00
1 parent a64989af9f
commit ddc3ae704a
10 files changed
+267 -82

No files matched your search

+41 -3
View File
@@ -2,12 +2,50 @@
namespace Picea\Extension;
use Picea\Compiler\Context;
class LanguageExtension implements Extension {
public array $tokens = [ "lang", "_" ];
public array $tokens = [ "lang", "_", "language.set" ];
public function parse(/*\Picae\Compiler\Context*/ &$context, ?string $arguments, string $token) {
return "<?php /* echo lang($arguments) */ ?>";
public string $currentLanguage = "";
protected LanguageHandler $languageHandler;
public function __construct(Context $context, LanguageHandler $handler) {
$this->register($context);
$this->languageHandler = $handler;
}
public function parse(/*\Picae\Compiler\Context*/ &$context, ?string $arguments, string $token) : string
{
switch($token) {
case "language.set":
return "<?php \$picea->compiler->getExtensionFromToken('$token')->currentLanguage = $arguments; ?>";
case "lang":
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->absoluteLang($arguments) ?>";
case "_":
return "<?php echo \$picea->compiler->getExtensionFromToken('$token')->relativeLang($arguments) ?>";
}
return "";
}
public function register(Context $context) : void
{
$context->pushFunction("_", [ $this, 'relativeLang' ]);
$context->pushFunction("lang", [ $this, 'absoluteLang' ]);
}
public function relativeLang(string $key, array $variables = []) : string
{
return $this->languageHandler->languageFromKey("{$this->currentLanguage}.{$key}", $variables);
}
public function absoluteLang(string $key, array $variables = []) : string
{
return $this->languageHandler->languageFromKey($key, $variables);
}
}