- Added the PrintExtension

This commit is contained in:
Dave M. 2021-01-06 19:31:58 +00:00
parent 82eca2e520
commit 4e909b2840
2 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,33 @@
<?php
namespace Picea\Extension;
use Picea\Compiler\Context;
class PrintExtension implements Extension {
public array $token = [ "print", "print.safe", "print.raw" ];
public int $flag = \ENT_QUOTES;
public string $encoding;
public bool $doubleEncode = true;
public function __construct() {
$this->encoding = ini_get("default_charset");
}
public function parse(/*\Picae\Compiler\Context*/ &$context, ?string $arguments, string $token) : string
{
switch($token) {
case 'print':
case "print.safe":
return "<?php echo htmlspecialchars(sprintf($arguments), {$this->flag}, '{$this->encoding}', " . ($this->doubleEncode ? "true" : "false") . ") ?>";
case "print.raw":
return "<?php echo sprintf($arguments) ?>";
}
}
}

View File

@ -68,6 +68,7 @@ class DefaultRegistrations implements LanguageRegistration
public function registerExtension(Compiler $compiler) : void
{
$compiler->registerExtension(new \Picea\Extension\PhpExtension());
$compiler->registerExtension(new \Picea\Extension\PrintExtension());
$compiler->registerExtension(new \Picea\Extension\JsonExtension($this->context));
foreach($this->extensions ?? [] as $extension) {