def link_refs(osistext, ref): com = osistext.find_all('div', annotateRef=str(ref)) assert len(com) == 1 com = com[0] link = com.find('list', cls='reference_links') if link: return set([Ref(i['osisRef'][5:]) for i in link.find_all('reference')]) else: return set()
def test_merge_comments(): osistext = BeautifulSoup( """ <osisText> <div annotateRef="Gen.1.1-Gen.1.4" annotateType="commentary"><reference>blah1</reference></div> <div annotateRef="Gen.1.2-Gen.1.4" annotateType="commentary"><reference>blah2</reference></div> <div annotateRef="Gen.1.2" annotateType="commentary"><reference>blah3</reference></div> <div annotateRef="Gen.1.3" annotateType="commentary"><reference>blah4</reference></div> </osisText> """, 'xml') s = Study2Osis(options) s.root_soup = s.osistext = osistext s.fix_overlapping_ranges() result = osistext.prettify() print result assert link_refs(osistext, 'Gen.1.1') == set() assert link_refs(osistext, 'Gen.1.2') == {Ref('Gen.1.1')} assert link_refs(osistext, 'Gen.1.4') == {Ref('Gen.1.1'), Ref('Gen.1.2')}
def test_overlapping_1(): osistext = BeautifulSoup(""" <osisText> <div annotateRef="Gen.1.1-Gen.1.4" annotateType="commentary"><reference>blah1</reference></div> <div annotateRef="Gen.1.2-Gen.1.4" annotateType="commentary"><reference>blah2</reference></div> <div annotateRef="Gen.1.3" annotateType="commentary"><reference>blah3</reference></div> </osisText> """, 'xml') s = Commentary(options) s.root_soup = osistext s.osistext = osistext.find('osisText') s.expand_all_ranges() s.fix_overlapping_ranges() result = osistext.prettify() print(result) assert link_refs(osistext, 'Gen.1.1') == set() assert link_refs(osistext, 'Gen.1.2') == {Ref('Gen.1.1')} assert link_refs(osistext, 'Gen.1.3') == {Ref('Gen.1.1'), Ref('Gen.1.2')} assert link_refs(osistext, 'Gen.1.4') == {Ref('Gen.1.1'), Ref('Gen.1.2')}
def test_commentless_verse_within_rangecomment(): osistext = BeautifulSoup( """ <osisText> <div annotateRef="Gen.1.1-Gen.1.4" annotateType="commentary"><reference>blah1</reference></div> <div annotateRef="Gen.1.2" annotateType="commentary"><reference>blah2</reference></div> <div annotateRef="Gen.1.4" annotateType="commentary"><reference>blah4</reference></div> </osisText> """, 'xml') # here, we want to create empty comment in verse 3 and add link there (instead of linking to verse 1). s = Study2Osis(options) s.root_soup = s.osistext = osistext s.fix_overlapping_ranges() result = osistext.prettify() print result assert link_refs(osistext, 'Gen.1.1') == set() assert link_refs(osistext, 'Gen.1.2') == {Ref('Gen.1.1')} assert link_refs(osistext, 'Gen.1.3') == {Ref('Gen.1.1')} assert link_refs(osistext, 'Gen.1.4') == {Ref('Gen.1.1')}
def test_guess_range_end(): h = HTML2OsisMixin() g = h._guess_range_end c = lambda x: BeautifulSoup('<a>%s</a>'%x, 'xml').a assert g(Ref('Gen.1.1'), c('1:1-3')) == Ref('Gen', 1, 3) assert g(Ref('Isa.11.1'), c('Isa. 11:1-10')) == Ref('Isa.11.10') assert g(Ref('Isa.11.1'), c('Isa. 11:1-12:10')) == Ref('Isa.12.10') assert g(Ref('Isa.11.1'), c('11:1-12:10')) == Ref('Isa.12.10') assert g(Ref('Isa.11.1'), c('Isa 11:1-10')) == Ref('Isa.11.10') assert g(Ref('Isa.11.1'), c('Isa 11:1-12:10')) == Ref('Isa.12.10') assert g(Ref('1Cor.3.16'), c('1 Cor. 3:16–17')) == Ref('1Cor.3.17') assert g(Ref('1Cor.3.16'), c('vv. 16-17')) == Ref('1Cor.3.17')
def test_ref(): assert Ref('Rev.1.1') > Ref('Jude.1.1') assert Ref('Rev.1.2') > Ref('Rev.1.1') assert Ref('Rev.2.1') > Ref('Rev.1.1') assert Ref('Gen.1.1') < Ref('Jude.1.1') assert '%s' % Ref('Gen.1.1') == 'Gen.1.1' assert '%s' % Ref('Jude.1.1') == 'Jude.1.1' assert Ref('Gen.1.1') == Ref('Gen.1.1') assert Ref('SOMEBOOK:Gen.1.1') == Ref('Gen.1.1') assert Ref('Gen.1.1') in [Ref('Gen.1.1')] assert Ref('Gen.1.1') in {Ref('Gen.1.1'): 1} assert sorted([Ref('Gen.1.1'), Ref('Gen.2.1')]) == [Ref("Gen.1.1"), Ref("Gen.2.1")] assert sorted([Ref('Gen.1.1'), Ref('Exod.2.1')]) == [Ref("Gen.1.1"), Ref("Exod.2.1")] assert sorted([Ref('Rev.1.1'), Ref('Exod.2.1')]) == [Ref("Exod.2.1"), Ref("Rev.1.1")] assert next(Ref('Gen.1.1')) == Ref('Gen.1.2') assert next(Ref('Gen.1.31')) == Ref('Gen.2.1') assert next(Ref('Gen.50.25')) == Ref('Gen.50.26') assert next(Ref('Gen.50.26')) == Ref('Exod.1.1') assert list(xrefrange(Ref('Gen.1.1'), 'Gen.1.4')) == [Ref("Gen.1.1"), Ref("Gen.1.2"), Ref("Gen.1.3"), Ref("Gen.1.4")] assert Ref('Rev', 1, 1) == Ref('Rev.1.1')