def test_cfr_citations_single(self): text = 'See 11 CFR 222.3(e)(3)(ii) for more' citations = cfr_citations(text) self.assertEqual(1, len(citations)) self.assertEqual('11 CFR 222.3(e)(3)(ii)', to_text(citations[0], text)) self.assertEqual( citations[0].label.settings, dict(cfr_title='11', part='222', section='3', p1='e', p2='3', p3='ii'))
def test_cfr_citations_single_no_section(self): """The "part" token can also be present; "section"s don't need to be""" text = 'See 11 CFR part 222 or 33 CFR 44' citations = cfr_citations(text) self.assertEqual(2, len(citations)) c11, c33 = citations self.assertEqual('11 CFR part 222', to_text(c11, text)) self.assertEqual('33 CFR 44', to_text(c33, text)) self.assertEqual(c11.label.settings, dict(cfr_title='11', part='222')) self.assertEqual(c33.label.settings, dict(cfr_title='33', part='44'))
def find(self, node): for cit in cfr_citations(node.text): if cit.label.settings['part'] != node.label[0]: fdsys_params = {'titlenum': cit.label.settings['cfr_title'], 'partnum': cit.label.settings['part']} if 'section' in cit.label.settings: fdsys_params['section'] = cit.label.settings['section'] yield Cite(self.CITE_TYPE, cit.start, cit.end, cit.label.settings, fdsys_url(collection='cfr', **fdsys_params))
def test_cfr_citations_through(self): text = u'See 27 CFR 479.112, 479.114 – 479.119' citations = cfr_citations(text) self.assertEqual(3, len(citations)) twelve, fourteen, nineteen = citations self.assertEqual('27 CFR 479.112', to_text(twelve, text)) self.assertEqual(twelve.label.settings, dict(cfr_title='27', part='479', section='112')) self.assertEqual('479.114', to_text(fourteen, text)) self.assertEqual(fourteen.label.settings, dict(cfr_title='27', part='479', section='114')) self.assertEqual('479.119', to_text(nineteen, text)) self.assertEqual(nineteen.label.settings, dict(cfr_title='27', part='479', section='119')) citations = cfr_citations(text, include_fill=True) self.assertEqual([citation.label.settings for citation in citations], [ dict(cfr_title='27', part='479', section=str(i)) for i in (112, 114, 115, 116, 117, 118, 119) ])
def test_cfr_citations_through(self): text = u'See 27 CFR 479.112, 479.114 – 479.119' citations = cfr_citations(text) self.assertEqual(3, len(citations)) twelve, fourteen, nineteen = citations self.assertEqual('27 CFR 479.112', to_text(twelve, text)) self.assertEqual(twelve.label.settings, dict(cfr_title='27', part='479', section='112')) self.assertEqual('479.114', to_text(fourteen, text)) self.assertEqual(fourteen.label.settings, dict(cfr_title='27', part='479', section='114')) self.assertEqual('479.119', to_text(nineteen, text)) self.assertEqual(nineteen.label.settings, dict(cfr_title='27', part='479', section='119')) citations = cfr_citations(text, include_fill=True) self.assertEqual( [citation.label.settings for citation in citations], [dict(cfr_title='27', part='479', section=str(i)) for i in (112, 114, 115, 116, 117, 118, 119)])
def citations(input_files, unique): """Find all CFR citations in a file (or stdin)""" if not input_files: input_files = [codecs.getreader('utf8')(sys.stdin)] for f in input_files: text = f.read() citations = cfr_citations(text, include_fill=True) if unique: labels = {citation.label for citation in citations} for label in sorted(labels): click.echo(label) else: for citation in sorted(citations, key=lambda c: c.start): click.echo(u"{}: {}\n".format( text[citation.start:citation.end], citation.label))
def citations(input_files, unique): """Find all CFR citations in a file (or stdin)""" if not input_files: input_files = [codecs.getreader('utf8')(sys.stdin)] for file_ in input_files: text = file_.read() cits = cfr_citations(text, include_fill=True) if unique: labels = {citation.label for citation in cits} for label in sorted(labels): click.echo(label) else: for citation in sorted(cits, key=lambda c: c.start): click.echo(u"{}: {}\n".format( text[citation.start:citation.end], citation.label))
def test_cfr_citations_multiple(self): text = 'Go look at 2 CFR 111.22, 333.45, and 444.55(e)' citations = cfr_citations(text) self.assertEqual(3, len(citations)) self.assertEqual('2 CFR 111.22', to_text(citations[0], text)) self.assertEqual(citations[0].label.settings, dict(cfr_title='2', part='111', section='22')) self.assertEqual('333.45', to_text(citations[1], text)) self.assertEqual(citations[1].label.settings, dict(cfr_title='2', part='333', section='45')) self.assertEqual('444.55(e)', to_text(citations[2], text)) self.assertEqual(citations[2].label.settings, dict(cfr_title='2', part='444', section='55', p1='e'))
def test_cfr_citations_multiple(self): text = 'Go look at 2 CFR 111.22, 333.45, and 444.55(e)' citations = cfr_citations(text) self.assertEqual(3, len(citations)) self.assertEqual('2 CFR 111.22', to_text(citations[0], text)) self.assertEqual(citations[0].label.settings, dict(cfr_title='2', part='111', section='22')) self.assertEqual('333.45', to_text(citations[1], text)) self.assertEqual(citations[1].label.settings, dict(cfr_title='2', part='333', section='45')) self.assertEqual('444.55(e)', to_text(citations[2], text)) self.assertEqual( citations[2].label.settings, dict(cfr_title='2', part='444', section='55', p1='e'))