- Added the PrintExtension
This commit is contained in:
parent
82eca2e520
commit
4e909b2840
|
@ -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) ?>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -68,6 +68,7 @@ class DefaultRegistrations implements LanguageRegistration
|
||||||
public function registerExtension(Compiler $compiler) : void
|
public function registerExtension(Compiler $compiler) : void
|
||||||
{
|
{
|
||||||
$compiler->registerExtension(new \Picea\Extension\PhpExtension());
|
$compiler->registerExtension(new \Picea\Extension\PhpExtension());
|
||||||
|
$compiler->registerExtension(new \Picea\Extension\PrintExtension());
|
||||||
$compiler->registerExtension(new \Picea\Extension\JsonExtension($this->context));
|
$compiler->registerExtension(new \Picea\Extension\JsonExtension($this->context));
|
||||||
|
|
||||||
foreach($this->extensions ?? [] as $extension) {
|
foreach($this->extensions ?? [] as $extension) {
|
||||||
|
|
Loading…
Reference in New Issue