+ # Replace `self` by `parent`.
+ #
+ # var elem = new HTMLTag("li")
+ # elem.add_outer(new HTMLTag("ul"))
+ # assert elem.write_to_string == "<ul><li></li></ul>"
+ fun add_outer(parent: HTMLTag) do
+ # copy self in new object
+ var child = new HTMLTag(self.tag)
+ child.attrs = self.attrs
+ child.classes = self.classes
+ child.css_props = self.css_props
+ child.children = self.children
+ # add copy in parent children elements
+ parent.children.add(child)
+ # replace self by parent
+ self.tag = parent.tag
+ self.attrs = parent.attrs
+ self.classes = parent.classes
+ self.css_props = parent.css_props
+ self.is_void = parent.is_void
+ self.children = parent.children
+ end
+