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 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 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 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'))
예제 #9
0
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))
예제 #10
0
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'))