def process_node(self, node):
        node['label_id'] = '-'.join(node['label'])
        self.process_node_title(node)

        node['html_label'] = to_markup_id(node['label'])
        node['markup_id'] = "-".join(node['html_label'])
        node['tree_level'] = len(node['label']) - 1

        list_level, list_type = self.list_level(node['label'],
                                                node['node_type'])

        node['list_level'] = list_level

        # exception for situations in which we have unnumbered definitions
        # unnumbered defs have the last part of their label in CamelCase
        # and the word "means" in their text
        if re.search('([A-Z][a-z]+)+', node['label'][-1]) and re.search(
                'means', node['text']):
            node['list_type'] = 'no-marker'
        else:
            node['list_type'] = list_type

        if len(node['text']):
            inline_elements = self.inline_applier.get_layer_pairs(
                node['label_id'], node['text'])
            search_elements = self.search_applier.get_layer_pairs(
                node['label_id'])

            if self.diff_applier:
                node['marked_up'] = self.diff_applier.apply_diff(
                    node['text'], node['label_id'])

            layers_applier = LayersApplier()
            layers_applier.enqueue_from_list(inline_elements)
            layers_applier.enqueue_from_list(search_elements)

            if 'marked_up' in node:
                node['marked_up'] = layers_applier.apply_layers(
                    node['marked_up'])
            else:
                node['marked_up'] = layers_applier.apply_layers(node['text'])
            node['marked_up'] = HTMLBuilder.section_space(node['marked_up'])

        node = self.p_applier.apply_layers(node)

        if 'TOC' in node:
            for l in node['TOC']:
                l['label'] = HTMLBuilder.section_space(l['label'])

        if 'interp' in node and 'markup' in node['interp']:
            node['interp']['markup'] = HTMLBuilder.section_space(
                node['interp']['markup'])

        if node['node_type'] == INTERP:
            self.modify_interp_node(node)

        for c in node['children']:
            self.process_node(c)
Exemple #2
0
    def process_node(self, node):
        node['label_id'] = '-'.join(node['label'])
        self.process_node_title(node)

        node['html_label'] = to_markup_id(node['label'])
        node['markup_id'] = "-".join(node['html_label'])
        node['tree_level'] = len(node['label']) - 1

        list_level, list_type = self.list_level(
            node['label'], node['node_type'])

        node['list_level'] = list_level
        node['list_type'] = list_type

        if len(node['text']):
            inline_elements = self.inline_applier.get_layer_pairs(
                node['label_id'], node['text'])
            search_elements = self.search_applier.get_layer_pairs(
                node['label_id'])

            if self.diff_applier:
                node['marked_up'] = self.diff_applier.apply_diff(
                    node['text'], node['label_id'])

            layers_applier = LayersApplier()
            layers_applier.enqueue_from_list(inline_elements)
            layers_applier.enqueue_from_list(search_elements)

            if 'marked_up' in node:
                node['marked_up'] = layers_applier.apply_layers(
                    node['marked_up'])
            else:
                node['marked_up'] = layers_applier.apply_layers(node['text'])
            node['marked_up'] = HTMLBuilder.section_space(node['marked_up'])

        node = self.p_applier.apply_layers(node)

        if 'TOC' in node:
            for l in node['TOC']:
                l['label'] = HTMLBuilder.section_space(l['label'])

        if 'interp' in node and 'markup' in node['interp']:
            node['interp']['markup'] = HTMLBuilder.section_space(
                node['interp']['markup'])

        if node['node_type'] == INTERP:
            self.modify_interp_node(node)

        for c in node['children']:
            self.process_node(c)
Exemple #3
0
    def process_node(self, node):

        node['label_id'] = '-'.join(node['label'])
        self.process_node_title(node)

        node['html_label'] = to_markup_id(node['label'])
        node['markup_id'] = "-".join(node['html_label'])
        node['tree_level'] = len(node['label']) - 1

        list_level, list_type = self.list_level(
            node['label'], node['node_type'])

        node['list_level'] = list_level
        node['list_type'] = list_type

        if 'formatting' in self.search_applier.layers:
            format_layer_data = self.search_applier.layers['formatting'].layer_data
        else:
            format_layer_data = {}

        def is_table(node_label, layer_data):
            if node_label not in layer_data:
                return False
            else:
                for item in layer_data[node_label]:
                    if 'table_data' in item:
                        return True
            return False

        if len(node['text']):
            inline_elements = self.inline_applier.get_layer_pairs(
                node['label_id'], node['text'])
            search_elements = self.search_applier.get_layer_pairs(
                node['label_id'])

            if self.diff_applier:
                node['marked_up'] = self.diff_applier.apply_diff(
                    node['text'], node['label_id'])

            layers_applier = LayersApplier()
            layers_applier.enqueue_from_list(inline_elements)
            layers_applier.enqueue_from_list(search_elements)

            if 'marked_up' in node:
                node['marked_up'] = layers_applier.apply_layers(
                    node['marked_up'])
            else:
                node['marked_up'] = layers_applier.apply_layers(node['text'])
            node['marked_up'] = HTMLBuilder.section_space(node['marked_up'])

        elif is_table(node['label_id'], format_layer_data):
            # if this is a table, render it anyway
            layers_applier = LayersApplier()
            search_elements = self.search_applier.get_layer_pairs(
                node['label_id'])
            layers_applier.enqueue_from_list(search_elements)
            if 'marked_up' in node:
                node['marked_up'] = layers_applier.apply_layers(
                    node['marked_up'])
            else:
                node['marked_up'] = layers_applier.apply_layers(node['text'])
            node['marked_up'] = HTMLBuilder.section_space(node['marked_up'])

        node = self.p_applier.apply_layers(node)

        if 'TOC' in node:
            for l in node['TOC']:
                l['label'] = HTMLBuilder.section_space(l['label'])

        if 'interp' in node and 'markup' in node['interp']:
            node['interp']['markup'] = HTMLBuilder.section_space(
                node['interp']['markup'])

        if node['node_type'] == INTERP:
            self.modify_interp_node(node)

        for c in node['children']:
            self.process_node(c)