Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * copy element including content, wai, attributes
- *
- * $a = Element::create('a')->attr('href', 'http://google.de')->attr('id', 'google-link')->wai('role', 'button')
- * ->content($span = Element::create('span')->content('link'));
- *
- * $copy = $a->copy(Element::COPY_WAI | Element::COPY_CONTENT);
- *
- * $span->content = 'Gooooooooooooooogle';
- *
- * var_dump($a->render(), $copy->render());
- * string(94) "<a role="button" id="google-link" href="http://google.de"><span>Gooooooooooooooogle</span></a>"
- * string(38) "<a role="button"><span>link</span></a>"
- *
- */
- public function copy($__flag)
- {
- static $__STATIC_map;
- isset($__STATIC_map) ?: $__STATIC_map = function($__value)
- {
- return is_object($__value) ? clone $__value : $__value;
- };
- $Copy = new $this;
- $Copy->__Element = new $this->__Element
- (
- #! copy ADT attribute/wai/content
- $this->__Element->getTupleGC([__type_Element::parent, __type_Element::attribute, __type_Element::wai]),
- #! clone or create empty __type_Element sub tuple
- [
- __type_Element::attribute => self::COPY_ATTR === ($__flag & self::COPY_ATTR) ? clone $this->__Element->get()[__type_Element::attribute] : Invoke::emitClass($this->__ElementSetup[__type_Element::attribute]),
- __type_Element::wai => self::COPY_WAI === ($__flag & self::COPY_WAI) ? clone $this->__Element->get()[__type_Element::wai] : Invoke::emitClass($this->__ElementSetup[__type_Element::wai]),
- __type_Element::content => Invoke::emitClass($this->__ElementSetup[__type_Element::content], [static::$__tContent, self::COPY_CONTENT === ($__flag & self::COPY_CONTENT) ? FsbCollection::fromArray($this->__Element->get()[__type_Element::content]->get())->map($__STATIC_map, ['collect' => FALSE]) : []])
- ]
- #! use element defaults
- + $this->__ElementSetup
- );
- return $Copy;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement