homepage and mini mobile systems

This commit is contained in:
2024-12-18 07:06:24 -08:00
parent 23a9c365e8
commit 90505b964a
48 changed files with 11210 additions and 903 deletions

View File

@@ -1,4 +1,5 @@
<?php
/**
* Handlebars base template
* contain some utility method to get context and helpers
@@ -51,7 +52,6 @@ class Template
$this->tree = $tree;
$this->source = $source;
array_push($this->stack, [0, $this->getTree(), false]);
}
/**
@@ -134,48 +134,49 @@ class Template
$current = $tree[$index];
$index++;
//if the section is exactly like waitFor
if (is_string($stop)
if (
is_string($stop)
&& $current[Tokenizer::TYPE] == Tokenizer::T_ESCAPED
&& $current[Tokenizer::NAME] === $stop
) {
break;
}
switch ($current[Tokenizer::TYPE]) {
case Tokenizer::T_SECTION :
$newStack = isset($current[Tokenizer::NODES])
? $current[Tokenizer::NODES] : [];
array_push($this->stack, [0, $newStack, false]);
$buffer .= $this->section($context, $current);
array_pop($this->stack);
break;
case Tokenizer::T_INVERTED :
$newStack = isset($current[Tokenizer::NODES]) ?
$current[Tokenizer::NODES] : [];
array_push($this->stack, [0, $newStack, false]);
$buffer .= $this->inverted($context, $current);
array_pop($this->stack);
break;
case Tokenizer::T_COMMENT :
$buffer .= '';
break;
case Tokenizer::T_PARTIAL:
case Tokenizer::T_PARTIAL_2:
$buffer .= $this->partial($context, $current);
break;
case Tokenizer::T_UNESCAPED:
case Tokenizer::T_UNESCAPED_2:
$buffer .= $this->variables($context, $current, false);
break;
case Tokenizer::T_ESCAPED:
$buffer .= $this->variables($context, $current, true);
break;
case Tokenizer::T_TEXT:
$buffer .= $current[Tokenizer::VALUE];
break;
default:
throw new RuntimeException(
'Invalid node type : ' . json_encode($current)
);
case Tokenizer::T_SECTION:
$newStack = isset($current[Tokenizer::NODES])
? $current[Tokenizer::NODES] : [];
array_push($this->stack, [0, $newStack, false]);
$buffer .= $this->section($context, $current);
array_pop($this->stack);
break;
case Tokenizer::T_INVERTED:
$newStack = isset($current[Tokenizer::NODES]) ?
$current[Tokenizer::NODES] : [];
array_push($this->stack, [0, $newStack, false]);
$buffer .= $this->inverted($context, $current);
array_pop($this->stack);
break;
case Tokenizer::T_COMMENT:
$buffer .= '';
break;
case Tokenizer::T_PARTIAL:
case Tokenizer::T_PARTIAL_2:
$buffer .= $this->partial($context, $current);
break;
case Tokenizer::T_UNESCAPED:
case Tokenizer::T_UNESCAPED_2:
$buffer .= $this->variables($context, $current, false);
break;
case Tokenizer::T_ESCAPED:
$buffer .= $this->variables($context, $current, true);
break;
case Tokenizer::T_TEXT:
$buffer .= $current[Tokenizer::VALUE];
break;
default:
throw new RuntimeException(
'Invalid node type : ' . json_encode($current)
);
}
}
if ($stop) {
@@ -204,7 +205,8 @@ class Template
$current = $tree[$index];
$index++;
//if the section is exactly like waitFor
if (is_string($stop)
if (
is_string($stop)
&& $current[Tokenizer::TYPE] == Tokenizer::T_ESCAPED
&& $current[Tokenizer::NAME] === $stop
) {
@@ -369,11 +371,14 @@ class Template
if ($escaped) {
$args = $this->handlebars->getEscapeArgs();
array_unshift($args, $value);
$value = call_user_func_array(
$this->handlebars->getEscape(),
array_values($args)
);
if (is_array($args) && is_array($this->handlebars)) {
$value = call_user_func_array(
$this->handlebars->getEscape(),
array_values($args)
);
}
}
return $value;