summaryrefslogtreecommitdiff
path: root/bs4/element.py
diff options
context:
space:
mode:
Diffstat (limited to 'bs4/element.py')
-rw-r--r--bs4/element.py26
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: