def __init__(self, block_map): self.block_map = block_map self.document = DOM.create_document_fragment() self.wrapper_stack = [ # Default wrapper element is a fragment, does not have options. [DOM.create_document_fragment(), 0, []], ]
def __init__(self, depth, options): if options: self.elt = DOM.create_element(options[0], options[1]) else: self.elt = DOM.create_document_fragment() self.depth = depth self.options = options
def __init__(self, root_element, entity_decorators, entity_map): self.entity_decorators = entity_decorators self.entity_map = entity_map stack_start = DOM.create_document_fragment() DOM.append_child(root_element, stack_start) self.entity_stack = [(stack_start, {})]
def set_wrapper(self, options=[], depth=0): if len(options) == 0: element = DOM.create_document_fragment() else: element = DOM.create_element(options[0], options[1]) new_wrapper = [element, depth, options] if depth >= len(self.wrapper_stack): DOM.append_child(DOM.get_children(self.get_wrapper_elt())[-1], element) self.wrapper_stack.append(new_wrapper) else: # Cut the stack to where it now stops, and add new wrapper. self.wrapper_stack = self.wrapper_stack[:depth] + [new_wrapper]
def replace_linebreaks(self, text): lines = text.split('\n') if len(lines) > 1: wrapper = DOM.create_document_fragment() DOM.append_child(wrapper, DOM.create_text_node(lines[0])) for l in lines[1:]: DOM.append_child(wrapper, DOM.create_element('br')) DOM.append_child(wrapper, DOM.create_text_node(l)) else: wrapper = DOM.create_text_node(text) return wrapper
def render_entitities(self, root_element, style_node): stack_start = DOM.create_document_fragment() DOM.append_child(root_element, stack_start) element_stack = [stack_start] new_element = stack_start if len(self.entity_stack) == 0: DOM.append_child(root_element, style_node) else: for entity_details in self.entity_stack: decorator = self.get_entity_decorator(entity_details) props = entity_details.copy() props['children'] = style_node new_element = decorator.render(props) DOM.append_child(element_stack[-1], new_element) element_stack.append(new_element) return new_element
def __init__(self, block_map): self.block_map = block_map self.document = DOM.create_document_fragment() self.stack = WrapperStack()
def test_create_document_fragment(self): self.assertEqual(DOM.get_tag_name(DOM.create_document_fragment()), 'fragment')