- Fixed some bugs related to options

This commit is contained in:
Dave M. 2023-02-02 15:26:26 +00:00
parent f00c98b7ff
commit 30ddd4c98b
1 changed files with 9 additions and 10 deletions

View File

@ -26,9 +26,9 @@ class UiElement implements \ArrayAccess, \Iterator, \JsonSerializable {
* tag-type single Only render a single tag. Cannot contains any childrens * tag-type single Only render a single tag. Cannot contains any childrens
* force-tag-open tag Control the way the opening tag is rendered * force-tag-open tag Control the way the opening tag is rendered
* force-tag-close tag-close " " " " closing " " " * force-tag-close tag-close " " " " closing " " "
* no-attr Attributes will not be rendered * no-attr true Attributes will not be rendered
* no-id ID is not automatically given (* may be removed *) * no-id true ID is not automatically given (* may be removed *)
* escape-tag-end If you need to echo the Node inside another string, it may be useful to escape the "/" char using "\/" * escape-tag-end true If you need to echo the Node inside another string, it may be useful to escape the "/" char using "\/"
*/ */
public array $options = []; public array $options = [];
@ -148,7 +148,7 @@ class UiElement implements \ArrayAccess, \Iterator, \JsonSerializable {
return $this; return $this;
} }
public function option(string $var, $value = 1) : self public function option(string $var, mixed $value = true) : self
{ {
$this->options[$var] = $value; $this->options[$var] = $value;
@ -200,14 +200,14 @@ class UiElement implements \ArrayAccess, \Iterator, \JsonSerializable {
} }
} }
if ( in_array('no-tag', $this->options, true) ) { if ( $this->options['no-tag'] ?? false ) {
return $this->content . $content; return $this->content . $content;
} }
else { else {
$compiledAttributes = (count($attributesList) && ! in_array('no-attr', $this->options, true) ? " " . implode(" ", $attributesList) : ""); $compiledAttributes = $this->options['no-attr'] ?? false ? "" : " " . implode(" ", $attributesList);
# Force the node to contain a certain opening tag (php is a good example) # Force the node to contain a certain opening tag (php is a good example)
if ( in_array('force-tag-open', $this->options, true) ) { if ( $this->options['force-tag-open'] ?? false ) {
$opentag = $this->options['force-tag-open'] . $compiledAttributes; $opentag = $this->options['force-tag-open'] . $compiledAttributes;
} }
else { else {
@ -219,11 +219,11 @@ class UiElement implements \ArrayAccess, \Iterator, \JsonSerializable {
$closetag = ""; $closetag = "";
} }
} }
elseif ( in_array('force-tag-close', $this->options, true) ) { elseif ( $this->options['force-tag-close'] ?? false ) {
$closetag = $this->options['force-tag-close']; $closetag = $this->options['force-tag-close'];
} }
else { else {
$closetag = $this->tag ? "<" . (in_array('escape-tag-end', $this->options) ? "\/" : "/" ) . "{$this->tag}>" : ""; $closetag = $this->tag ? "<" . ( $this->options['escape-tag-end'] ?? false ? "\/" : "/" ) . "{$this->tag}>" : "";
} }
return $opentag . $this->content . $content . $closetag; return $opentag . $this->content . $content . $closetag;
@ -259,7 +259,6 @@ class UiElement implements \ArrayAccess, \Iterator, \JsonSerializable {
{ {
return $this->insert( static::INSERT_MODE_PREPEND, ...( is_array($arguments) ? array_reverse($arguments) : $arguments) ); return $this->insert( static::INSERT_MODE_PREPEND, ...( is_array($arguments) ? array_reverse($arguments) : $arguments) );
} }
protected function insert(int $mode, ...$elements) : self protected function insert(int $mode, ...$elements) : self
{ {