Update Dirk

Add @isset(), @endisset, @empty() and @endempty
This commit is contained in:
Visman 2021-02-06 21:02:52 +07:00
parent 4cfc267001
commit 0a8a57da98
2 changed files with 58 additions and 13 deletions

View file

@ -89,6 +89,11 @@ Conditionals
* *@endif*
* *@unless(condition)* - Starts an unless block
* *@endunless*
* *@isset(condition)* - Starts an isset block
* *@endisset*
* *@empty(condition)* - Starts an empty block
* *@endempty*
Loops
* *@foreach($list as $key => $val)* - Starts a foreach block

View file

@ -166,12 +166,12 @@ class Dirk extends PhpEngine
{
if (\preg_match('%^\(\s*(\!\s*)?(\$[\w>-]+\[(?:[\'"]\w+[\'"]|\d+)\])\s*\)$%', $expression, $matches)) {
if (empty($matches[1])) {
return "<?php if(! empty{$expression}): ?>";
return "<?php if (! empty{$expression}): ?>";
} else {
return "<?php if(empty({$matches[2]})): ?>";
return "<?php if (empty({$matches[2]})): ?>";
}
} else {
return "<?php if{$expression}: ?>";
return "<?php if {$expression}: ?>";
}
}
@ -183,7 +183,7 @@ class Dirk extends PhpEngine
*/
protected function compileElseif(string $expression): string
{
return "<?php elseif{$expression}: ?>";
return "<?php elseif {$expression}: ?>";
}
/**
@ -206,6 +206,37 @@ class Dirk extends PhpEngine
return "<?php endif; ?>";
}
/**
* Compile the isset statements
*
* @param string $expression
* @return string
*/
protected function compileIsset(string $expression): string
{
return "<?php if (isset{$expression}): ?>";
}
/**
* Compile the end-isset statements
*
* @return string
*/
protected function compileEndisset(): string
{
return "<?php endif; ?>";
}
/**
* Compile the end-empty statements
*
* @return string
*/
protected function compileEndempty(): string
{
return "<?php endif; ?>";
}
/**
* Compile the unless statements
*
@ -214,7 +245,7 @@ class Dirk extends PhpEngine
*/
protected function compileUnless(string $expression): string
{
return "<?php if(! $expression): ?>";
return "<?php if (! $expression): ?>";
}
/**
@ -235,7 +266,7 @@ class Dirk extends PhpEngine
*/
protected function compileFor(string $expression): string
{
return "<?php for{$expression}: ?>";
return "<?php for {$expression}: ?>";
}
/**
@ -256,7 +287,7 @@ class Dirk extends PhpEngine
*/
protected function compileForeach(string $expression): string
{
return "<?php foreach{$expression}: ?>";
return "<?php foreach {$expression}: ?>";
}
/**
@ -281,21 +312,30 @@ class Dirk extends PhpEngine
$this->emptyCounter++;
return "<?php \$__empty_{$this->emptyCounter} = true; "
. "foreach{$expression}: "
. "foreach {$expression}: "
. "\$__empty_{$this->emptyCounter} = false;?>";
}
/**
* Compile the end-forelse statements
* Compile the empty statements
*
* @param string $expression
* @return string
*/
protected function compileEmpty(): string
protected function compileEmpty(string $expression): string
{
$s = "<?php endforeach; if (\$__empty_{$this->emptyCounter}): ?>";
$this->emptyCounter--;
if (
isset($expression[0])
&& '(' == $expression[0]
) {
return "<?php if (empty{$expression}): ?>";
} else {
$s = "<?php endforeach; if (\$__empty_{$this->emptyCounter}): ?>";
$this->emptyCounter--;
return $s;
return $s;
}
}
/**
@ -316,7 +356,7 @@ class Dirk extends PhpEngine
*/
protected function compileWhile(string $expression): string
{
return "<?php while{$expression}: ?>";
return "<?php while {$expression}: ?>";
}
/**