diff options
Diffstat (limited to 'bs4/element.py')
-rw-r--r-- | bs4/element.py | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/bs4/element.py b/bs4/element.py index 658115d..24d504b 100644 --- a/bs4/element.py +++ b/bs4/element.py @@ -724,7 +724,10 @@ class Tag(PageElement): def __init__(self, parser=None, builder=None, name=None, namespace=None, prefix=None, attrs=None, parent=None, previous=None, - is_xml=None, sourceline=None, sourcepos=None): + is_xml=None, sourceline=None, sourcepos=None, + can_be_empty_element=None, cdata_list_attributes=None, + preserve_whitespace_tags=None + ): "Basic constructor." if parser is None: @@ -765,11 +768,12 @@ class Tag(PageElement): self.hidden = False if builder is None: - # In the absence of a TreeBuilder, assume this tag is nothing - # special. - self.can_be_empty_element = False - self.cdata_list_attributes = None - self.preserve_whitespace_tags = None + # In the absence of a TreeBuilder, use whatever values were + # passed in here. They're probably None, unless this is a copy of some + # other tag. + self.can_be_empty_element = can_be_empty_element + self.cdata_list_attributes = cdata_list_attributes + self.preserve_whitespace_tags = preserve_whitespace_tags else: # Set up any substitutions for this tag, such as the charset in a META tag. builder.set_up_substitutions(self) @@ -797,8 +801,14 @@ class Tag(PageElement): """A copy of a Tag is a new Tag, unconnected to the parse tree. Its contents are a copy of the old Tag's contents. """ - clone = type(self)(None, self.builder, self.name, self.namespace, - self.prefix, self.attrs, is_xml=self._is_xml) + clone = type(self)( + None, self.builder, self.name, self.namespace, + self.prefix, self.attrs, is_xml=self._is_xml, + sourceline=self.sourceline, sourcepos=self.sourcepos, + can_be_empty_element=self.can_be_empty_element, + cdata_list_attributes=self.cdata_list_attributes, + preserve_whitespace_tags=self.preserve_whitespace_tags + ) for attr in ('can_be_empty_element', 'hidden'): setattr(clone, attr, getattr(self, attr)) for child in self.contents: |