def apply_layer(self, text_index): if text_index in self.layer: layer_elements = self.layer[text_index] toc_list = [] for data in layer_elements: if 'Subpart' in data['index']: toc_list.append(toc_subpart(data, toc_list, self.layer)) elif 'Interp' in data['index']: toc_list.append(toc_interp(data, toc_list, self.layer)) else: toc_list.append(toc_sect_appendix(data, toc_list)) for el in toc_list: el['url'] = self.section_url.fetch(el['index'], self.version, self.sectional) for sub in el.get('sub_toc', []): sub['url'] = self.section_url.fetch( sub['index'], self.version, self.sectional) return ('TOC', toc_list)
def apply_layer(self, text_index): if text_index in self.layer: layer_elements = self.layer[text_index] toc_list = [] for data in layer_elements: if 'Subpart' in data['index']: toc_list.append(toc_subpart(data, toc_list, self.layer)) elif 'Interp' in data['index']: toc_list.append(toc_interp(data, toc_list, self.layer)) else: toc_list.append(toc_sect_appendix(data, toc_list)) for el in toc_list: el['url'] = self.section_url.fetch( el['index'], self.version, self.sectional) for sub in el.get('sub_toc', []): sub['url'] = self.section_url.fetch( sub['index'], self.version, self.sectional) return ('TOC', toc_list)
def attach_metadata(self, node): text_index = node['label_id'] if text_index in self.layer: layer_elements = self.layer[text_index] toc_list = [] for data in layer_elements: if 'Subpart' in data['index']: toc_list.append(toc_subpart(data, toc_list, self.layer)) elif 'Interp' in data['index']: toc_list.append(toc_interp(data, toc_list, self.layer)) else: toc_list.append(toc_sect_appendix(data, toc_list)) for el in toc_list: el['url'] = self.section_url.fetch( el['index'], self.version, self.sectional) for sub in el.get('sub_toc', []): sub['url'] = self.section_url.fetch( sub['index'], self.version, self.sectional) node['TOC'] = toc_list
def test_toc_interp(self): so_far = [{ 'index': ['1001', '1'] }, { 'index': ['1001', '2'] }, { 'index': ['1001', 'A'], 'is_appendix': True }, { 'index': ['1001', 'B'], 'is_appendix': True }] data = { 'title': 'Supplement II - Official Interps', 'index': ['1001', 'Interp'] } toc_data = {'1001-Interp': []} result = toc.toc_interp(data, so_far, toc_data) self.assertEqual('Supplement II', result['label']) self.assertEqual('Official Interps', result['sub_label']) self.assertTrue(result.get('is_supplement')) self.assertEqual(2, len(result['sub_toc'])) reg, app = result['sub_toc'] self.assertEqual('Regulation Text', reg['label']) self.assertTrue(reg.get('is_subterp')) self.assertEqual(['1001', 'Subpart', 'Interp'], reg['index']) self.assertEqual('1001-Subpart-Interp', reg['section_id']) self.assertEqual('Appendices', app['label']) self.assertTrue(app.get('is_subterp')) self.assertEqual(['1001', 'Appendices', 'Interp'], app['index']) self.assertEqual('1001-Appendices-Interp', app['section_id']) so_far = [{ 'index': ['1001', 'Subpart', 'C'], 'is_subpart': True, 'label': 'Subpart C', 'sub_label': 'Awesome Sauce', 'sub_toc': [{ 'index': ['1001', '1'] }, { 'index': ['1001', '2'] }] }] data = {'title': 'Unparsable', 'index': ['1001', 'Interp']} result = toc.toc_interp(data, so_far, toc_data) self.assertEqual('Supplement I', result['label']) self.assertEqual('', result['sub_label']) self.assertTrue(result.get('is_supplement')) self.assertEqual(1, len(result['sub_toc'])) subpart = result['sub_toc'][0] self.assertEqual('Subpart C', subpart['label']) self.assertEqual('Awesome Sauce', subpart['sub_label']) self.assertTrue(subpart.get('is_subterp')) self.assertEqual(['1001', 'Subpart', 'C', 'Interp'], subpart['index']) self.assertEqual('1001-Subpart-C-Interp', subpart['section_id']) toc_data = { '1001-Interp': [{ 'title': 'Intro', 'index': ['1001', 'Interp', 'h1'] }, { 'title': 'Section 1', 'index': ['1001', '1', 'Interp'] }] } result = toc.toc_interp(data, so_far, toc_data) self.assertEqual(2, len(result['sub_toc'])) h1, subpart = result['sub_toc'] self.assertEqual('Interpretations', h1['label']) self.assertEqual('Intro', h1['sub_label']) self.assertFalse(h1.get('is_subterp', False)) self.assertEqual('1001-Interp-h1', h1['section_id']) self.assertEqual(['1001', 'Interp', 'h1'], h1['index']) self.assertTrue(subpart.get('is_subterp')) self.assertEqual(['1001', 'Subpart', 'C', 'Interp'], subpart['index']) self.assertEqual('1001-Subpart-C-Interp', subpart['section_id'])
def test_toc_interp(self): so_far = [ {'index': ['1001', '1']}, {'index': ['1001', '2']}, {'index': ['1001', 'A'], 'is_appendix': True}, {'index': ['1001', 'B'], 'is_appendix': True}] data = {'title': 'Supplement II - Official Interps', 'index': ['1001', 'Interp']} toc_data = {'1001-Interp': []} result = toc.toc_interp(data, so_far, toc_data) self.assertEqual('Supplement II', result['label']) self.assertEqual('Official Interps', result['sub_label']) self.assertTrue(result.get('is_supplement')) self.assertEqual(2, len(result['sub_toc'])) reg, app = result['sub_toc'] self.assertEqual('Regulation Text', reg['label']) self.assertTrue(reg.get('is_subterp')) self.assertEqual(['1001', 'Subpart', 'Interp'], reg['index']) self.assertEqual('1001-Subpart-Interp', reg['section_id']) self.assertEqual('Appendices', app['label']) self.assertTrue(app.get('is_subterp')) self.assertEqual(['1001', 'Appendices', 'Interp'], app['index']) self.assertEqual('1001-Appendices-Interp', app['section_id']) so_far = [ {'index': ['1001', 'Subpart', 'C'], 'is_subpart': True, 'label': 'Subpart C', 'sub_label': 'Awesome Sauce', 'sub_toc': [{'index': ['1001', '1']}, {'index': ['1001', '2']}]}] data = {'title': 'Unparsable', 'index': ['1001', 'Interp']} result = toc.toc_interp(data, so_far, toc_data) self.assertEqual('Supplement I', result['label']) self.assertEqual('', result['sub_label']) self.assertTrue(result.get('is_supplement')) self.assertEqual(1, len(result['sub_toc'])) subpart = result['sub_toc'][0] self.assertEqual('Subpart C', subpart['label']) self.assertEqual('Awesome Sauce', subpart['sub_label']) self.assertTrue(subpart.get('is_subterp')) self.assertEqual(['1001', 'Subpart', 'C', 'Interp'], subpart['index']) self.assertEqual('1001-Subpart-C-Interp', subpart['section_id']) toc_data = {'1001-Interp': [{'title': 'Intro', 'index': ['1001', 'Interp', 'h1']}, {'title': 'Section 1', 'index': ['1001', '1', 'Interp']}]} result = toc.toc_interp(data, so_far, toc_data) self.assertEqual(2, len(result['sub_toc'])) h1, subpart = result['sub_toc'] self.assertEqual('Interpretations', h1['label']) self.assertEqual('Intro', h1['sub_label']) self.assertFalse(h1.get('is_subterp', False)) self.assertEqual('1001-Interp-h1', h1['section_id']) self.assertEqual(['1001', 'Interp', 'h1'], h1['index']) self.assertTrue(subpart.get('is_subterp')) self.assertEqual(['1001', 'Subpart', 'C', 'Interp'], subpart['index']) self.assertEqual('1001-Subpart-C-Interp', subpart['section_id'])