예제 #1
0
def diff_toc(older_version, newer_version, old_toc, diff, from_version):
    #We work around Subparts in the TOC for now.
    compiled_toc = extract_sections(old_toc)

    for node in (v['node'] for v in diff.values() if v['op'] == 'added'):
        if len(node['label']) == 2 and node['title']:
            element = {
                'label': node['title'],
                'index': node['label'],
                'section_id': '-'.join(node['label']),
                'op': 'added'
            }
            data = {'index': node['label'], 'title': node['title']}
            TableOfContentsLayer.section(element, data)
            TableOfContentsLayer.appendix_supplement(element, data)
            compiled_toc.append(element)

    modified, deleted = modified_deleted_sections(diff)
    for el in compiled_toc:
        if not 'Subpart' in el['index']:
            el['url'] = reverse_chrome_diff_view(
                el['section_id'], older_version, newer_version, from_version)
        # Deleted first, lest deletions in paragraphs affect the section
        if tuple(el['index']) in deleted and 'op' not in el:
            el['op'] = 'deleted'
        if tuple(el['index']) in modified and 'op' not in el:
            el['op'] = 'modified'

    return sort_toc(compiled_toc)
예제 #2
0
def diff_toc(versions, old_toc, diff):
    # We work around Subparts in the TOC for now.
    compiled_toc = extract_sections(old_toc)

    for node in (v['node'] for v in diff.values() if v['op'] == 'added'):
        if len(node['label']) == 2 and node['title']:
            element = {
                'label': node['title'],
                'index': node['label'],
                'section_id': '-'.join(node['label']),
                'op': 'added'
            }
            data = {'index': node['label'], 'title': node['title']}
            TableOfContentsLayer.section(element, data)
            TableOfContentsLayer.appendix_supplement(element, data)
            compiled_toc.append(element)

    modified, deleted = modified_deleted_sections(diff)
    for el in compiled_toc:
        if 'Subpart' not in el['index'] and 'Subjgrp' not in el['index']:
            el['url'] = reverse_chrome_diff_view(el['section_id'], *versions)
        # Deleted first, lest deletions in paragraphs affect the section
        if tuple(el['index']) in deleted and 'op' not in el:
            el['op'] = 'deleted'
        if tuple(el['index']) in modified and 'op' not in el:
            el['op'] = 'modified'

    return sorted(compiled_toc, key=normalize_toc)
예제 #3
0
    def test_appendix_supplement(self):
        toc = TableOfContentsLayer(None)
        el = {}
        toc.appendix_supplement(el, {'index': ['1']})
        self.assertEqual({}, el)

        toc.appendix_supplement(el, {'index': ['1', '2', '3']})
        self.assertEqual({}, el)

        toc.appendix_supplement(el, {'index': ['1', 'B', '3']})
        self.assertEqual({}, el)

        toc.appendix_supplement(el, {'index': ['1', 'Interp', '3']})
        self.assertEqual({}, el)

        toc.appendix_supplement(el, {
            'index': ['1', 'B'],
            'title': 'Appendix B - Bologna'})
        self.assertEqual(el, {
            'is_appendix': True,
            'is_first_appendix': True,
            'label': 'Appendix B',
            'sub_label': 'Bologna',
            'section_id': '1-B'
        })

        el = {}
        toc.appendix_supplement(el, {
            'index': ['204', 'A'],
            'title': 'Appendix A to Part 204 - Model Forms'})
        self.assertEqual(el, {
            'is_appendix': True,
            'is_first_appendix': True,
            'label': 'Appendix A to Part 204',
            'sub_label': 'Model Forms',
            'section_id': '204-A'
        })

        el = {}
        toc.appendix_supplement(el, {
            'index': ['1', 'Interp'],
            'title': 'Supplement I to 8787 - I am Iron Man'})
        self.assertEqual(el, {
            'is_supplement': True,
            'label': 'Supplement I to 8787',
            'sub_label': 'I am Iron Man',
            'section_id': '1-Interp'
        })
    def test_appendix_supplement(self):
        toc = TableOfContentsLayer(None)
        el = {}
        toc.appendix_supplement(el, {'index': ['1']})
        self.assertEqual({}, el)

        toc.appendix_supplement(el, {'index': ['1', '2', '3']})
        self.assertEqual({}, el)

        toc.appendix_supplement(el, {'index': ['1', 'B', '3']})
        self.assertEqual({}, el)

        toc.appendix_supplement(el, {'index': ['1', 'Interp', '3']})
        self.assertEqual({}, el)

        toc.appendix_supplement(el, {
            'index': ['1', 'B'],
            'title': 'Appendix B - Bologna'})
        self.assertEqual(el, {
            'is_appendix': True,
            'is_first_appendix': True,
            'label': 'Appendix B',
            'sub_label': 'Bologna',
            'section_id': '1-B'
        })

        el = {}
        toc.appendix_supplement(el, {
            'index': ['204', 'A'],
            'title': 'Appendix A to Part 204 - Model Forms'})
        self.assertEqual(el, {
            'is_appendix': True,
            'is_first_appendix': True,
            'label': 'Appendix A to Part 204',
            'sub_label': 'Model Forms',
            'section_id': '204-A'
        })

        el = {}
        toc.appendix_supplement(el, {
            'index': ['1', 'Interp'],
            'title': 'Supplement I to 8787 - I am Iron Man'})
        self.assertEqual(el, {
            'is_supplement': True,
            'label': 'Supplement I to 8787',
            'sub_label': 'I am Iron Man',
            'section_id': '1-Interp'
        })