diff --git a/4dev/tests/Template/CoreLibsTemplateHtmlBuilderElementTest.php b/4dev/tests/Template/CoreLibsTemplateHtmlBuilderElementTest.php
index 9321d0d0..7c96e32f 100644
--- a/4dev/tests/Template/CoreLibsTemplateHtmlBuilderElementTest.php
+++ b/4dev/tests/Template/CoreLibsTemplateHtmlBuilderElementTest.php
@@ -483,7 +483,8 @@ final class CoreLibsTemplateHtmlBuilderElementTest extends TestCase
// if we set invalid tag
$el = new Element('div');
$this->expectException(HtmlBuilderExcpetion::class);
- $this->expectExceptionMessage("Invalid or empty tag");
+ $this->expectExceptionMessageMatches("/^Invalid or empty tag: /");
+ $this->expectExceptionMessage("Invalid or empty tag: 123123");
$el->setTag('123123');
$this->assertTrue(
Error::hasError(),
diff --git a/www/admin/class_test.html_build.element.php b/www/admin/class_test.html_build.element.php
index a80669ca..68bb56f6 100644
--- a/www/admin/class_test.html_build.element.php
+++ b/www/admin/class_test.html_build.element.php
@@ -117,7 +117,9 @@ try {
$el_er = new Element('');
} catch (HtmlBuilderExcpetion $e) {
print "E: " . $e->getMessage() . " | " . $e->getTraceAsString() . "
";
- print "E: " . $e->getPrevious()->getMessage() . " | " . $e->getPrevious()->getTraceAsString() . "
";
+ if ($e->getPrevious() !== null) {
+ print "E: " . $e->getPrevious()->getMessage() . " | " . $e->getPrevious()->getTraceAsString() . "
";
+ }
}
print "Errors:
" . print_r(Error::getMessages(), true) . "
";
print "Warning: " . Support::printToString(Error::hasWarning()) . "
";
@@ -127,7 +129,9 @@ try {
$el_er = new Element('123123');
} catch (HtmlBuilderExcpetion $e) {
print "E: " . $e->getMessage() . " | " . $e->getTraceAsString() . "
";
- print "E: " . $e->getPrevious()->getMessage() . " | " . $e->getPrevious()->getTraceAsString() . "
";
+ if ($e->getPrevious() !== null) {
+ print "E: " . $e->getPrevious()->getMessage() . " | " . $e->getPrevious()->getTraceAsString() . "
";
+ }
}
print "Errors: " . print_r(Error::getMessages(), true) . "
";
print "Warning: " . Support::printToString(Error::hasWarning()) . "
";
diff --git a/www/lib/CoreLibs/Template/HtmlBuilder/Block.php b/www/lib/CoreLibs/Template/HtmlBuilder/Block.php
index 434b0f4d..2015280e 100644
--- a/www/lib/CoreLibs/Template/HtmlBuilder/Block.php
+++ b/www/lib/CoreLibs/Template/HtmlBuilder/Block.php
@@ -1,4 +1,4 @@
- $css,
* @param array $options
+ * @return array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array}
* @throws HtmlBuilderExcpetion
*/
public static function cel(
@@ -58,10 +59,10 @@ class Block
* Search element tree for id and add
* if id is empty add at current
*
- * @param array $base
- * @param array $attach
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $base
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $attach
* @param string $id
- * @return array
+ * @return array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array}
*/
public static function ael(
array $base,
@@ -87,9 +88,9 @@ class Block
/**
* Undocumented function
*
- * @param array $base
- * @param array ...$attach
- * @return array
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $base
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} ...$attach
+ * @return array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array}
*/
public static function aelx(
array $base,
@@ -102,9 +103,9 @@ class Block
/**
* Undocumented function
*
- * @param array $element
- * @param array $sub
- * @return array
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $element
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $sub
+ * @return array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array}
*/
public static function addSub(array $element, array ...$sub): array
{
@@ -118,10 +119,10 @@ class Block
/**
* Undocumented function
*
- * @param array $element
- * @return array
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $element
+ * @return array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array}
*/
- public static function resetSub(array $elment): array
+ public static function resetSub(array $element): array
{
$element['sub'] = [];
return $element;
@@ -132,9 +133,9 @@ class Block
/**
* Undocumented function
*
- * @param array $element
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $element
* @param string ...$css
- * @return array
+ * @return array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array}
*/
public static function acssel(array $element, string ...$css): array
{
@@ -145,8 +146,9 @@ class Block
/**
* Undocumented function
*
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $element
* @param string ...$css
- * @return array
+ * @return array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array}
*/
public static function rcssel(array $element, string ...$css): array
{
@@ -159,10 +161,10 @@ class Block
* scssel (switch) is not supported
* use rcssel -> acssel
*
- * @param array $element
- * @param array $rcss
- * @param array $acss
- * @return array
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $element
+ * @param array $rcss
+ * @param array $acss
+ * @return array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array}
*/
public static function scssel(array $element, array $rcss, array $acss): array
{
@@ -176,7 +178,7 @@ class Block
* Undocumented function
* alias phfo
*
- * @param array $tree
+ * @param array{tag:string,id:string,name:string,content:string,css:array,options:array,sub:array} $tree
* @param bool $add_nl [default=false]
* @return string
*/
@@ -232,14 +234,15 @@ class Block
* Undocumented function
* alias phfa
*
- * @param array $list
+ * @param array,options:array,sub:array}> $list
+ * @param bool $add_nl [default=false]
* @return string
*/
- public static function buildHtmlFromList(array $list): string
+ public static function buildHtmlFromList(array $list, bool $add_nl = false): string
{
$output = '';
foreach ($list as $el) {
- $output .= self::buildHtml($el);
+ $output .= self::buildHtml($el, $add_nl);
}
return $output;
}
@@ -248,7 +251,7 @@ class Block
* Undocumented function
* wrapper for buildHtmlFromList
*
- * @param array $list array of Elements to build string from
+ * @param array,options:array,sub:array}> $list array of Elements to build string from
* @param bool $add_nl [default=false] Optional output string line break
* @return string build html as string
*/
diff --git a/www/lib/CoreLibs/Template/HtmlBuilder/Element.php b/www/lib/CoreLibs/Template/HtmlBuilder/Element.php
index 3169067f..85d58745 100644
--- a/www/lib/CoreLibs/Template/HtmlBuilder/Element.php
+++ b/www/lib/CoreLibs/Template/HtmlBuilder/Element.php
@@ -85,7 +85,7 @@ class Element
'invalid or empty tag',
['tag' => $tag]
);
- throw new HtmlBuilderExcpetion('Invalid or empty tag');
+ throw new HtmlBuilderExcpetion('Invalid or empty tag: ' . $tag);
}
$this->tag = $tag;
}
@@ -297,7 +297,9 @@ class Element
}
// only on first level
foreach ($this->sub as $pos => $el) {
- if ($el['id'] === $id) {
+ if (
+ $el->getId() === $id
+ ) {
unset($this->sub[$pos]);
return;
}
@@ -525,10 +527,10 @@ class Element
* not recommended to be used, rather use "Element->buildHtml()"
* wrapper for buildHtml
*
- * @param Element $element Element tree to build
- * if not set returns empty string
- * @param bool $add_nl [default=false] Optional output string line break
- * @return string build html as string
+ * @param ?Element $tree Element tree to build
+ * if not set returns empty string
+ * @param bool $add_nl [default=false] Optional output string line break
+ * @return string build html as string
* @deprecated Do not use, use Element->buildHtml() instead
*/
public static function printHtmlFromObject(Element $tree = null, bool $add_nl = false): string
diff --git a/www/lib/CoreLibs/Template/HtmlBuilder/General/Error.php b/www/lib/CoreLibs/Template/HtmlBuilder/General/Error.php
index 3c4ff2c2..be025f03 100644
--- a/www/lib/CoreLibs/Template/HtmlBuilder/General/Error.php
+++ b/www/lib/CoreLibs/Template/HtmlBuilder/General/Error.php
@@ -13,7 +13,7 @@ namespace CoreLibs\Template\HtmlBuilder\General;
class Error
{
- /** @var array{level:string,id:string,message:string,context:array} */
+ /** @var array}> */
private static array $messages = [];
/**
@@ -22,7 +22,7 @@ class Error
* @param string $level
* @param string $id
* @param string $message
- * @param array $context
+ * @param array $context
* @return void
*/
private static function writeContent(
@@ -98,7 +98,7 @@ class Error
return array_filter(
self::$messages,
function ($var) use ($level) {
- return ($var['level'] ?? '') == $level ? true : false;
+ return $var['level'] == $level ? true : false;
}
) === [] ? false : true;
}
diff --git a/www/lib/CoreLibs/Template/HtmlBuilder/General/Settings.php b/www/lib/CoreLibs/Template/HtmlBuilder/General/Settings.php
index 8ee394f5..07fa6ff8 100644
--- a/www/lib/CoreLibs/Template/HtmlBuilder/General/Settings.php
+++ b/www/lib/CoreLibs/Template/HtmlBuilder/General/Settings.php
@@ -13,7 +13,7 @@ namespace CoreLibs\Template\HtmlBuilder\General;
class Settings
{
- /** @var array>string> list of html elements that can have the name tag */
+ /** @var array list of html elements that can have the name tag */
public const NAME_ELEMENTS = [
'button',
'fieldset',
diff --git a/www/lib/CoreLibs/Template/HtmlBuilder/StringReplace.php b/www/lib/CoreLibs/Template/HtmlBuilder/StringReplace.php
index 1376e454..7a259d5d 100644
--- a/www/lib/CoreLibs/Template/HtmlBuilder/StringReplace.php
+++ b/www/lib/CoreLibs/Template/HtmlBuilder/StringReplace.php
@@ -28,7 +28,7 @@ class StringReplace
* index must be non empty (but has no fixed format)
* if same index is tried twice it will set an error and skip
*
- * @param array ...$element Elements to load
+ * @param array{0:string,1:string} ...$element Elements to load
* @return void
* @throws HtmlBuilderExcpetion
*/
@@ -138,32 +138,27 @@ class StringReplace
*
* @param string $index index of set element
* @param array $replace array of text to search (key) and replace (value) for
- * @return string|false
+ * @return string
+ * @throws HtmlBuilderExcpetion
*/
public static function buildElement(
string $index,
array $replace,
string $replace_index = ''
- ): string|bool {
- if (self::getElement($index) === false) {
- return false;
+ ): string {
+ try {
+ self::getElement($index);
+ } catch (HtmlBuilderExcpetion $e) {
+ throw new HtmlBuilderExcpetion('Cannot fetch element with index: ' . $index, 0, $e);
}
if ($replace_index) {
self::setReplaceBlock(
$replace_index,
- self::replaceData(
- self::$elements[$index],
- array_keys($replace),
- array_values($replace)
- )
+ self::replaceData(self::$elements[$index], $replace)
);
return self::getReplaceBlock($replace_index);
} else {
- return self::replaceData(
- self::$elements[$index],
- array_keys($replace),
- array_values($replace)
- );
+ return self::replaceData(self::$elements[$index], $replace);
}
}
@@ -180,9 +175,9 @@ class StringReplace
*/
public static function replaceData(string $data, array $replace): string
{
- $replace = array_keys($replace);
+ $to_replace = array_keys($replace);
// all replace data must have {} around
- array_walk($replace, function (&$entry) {
+ array_walk($to_replace, function (&$entry) {
if (!str_starts_with($entry, '{')) {
$entry = '{' . $entry;
}
@@ -192,7 +187,7 @@ class StringReplace
// do some validation?
});
// replace content
- return str_replace($replace, array_values($replace), $data);
+ return str_replace($to_replace, array_values($replace), $data);
}
}