예제 #1
0
def test_change_node_structure():

    # increase depth
    node = library.get_index('Delete Me').nodes.children[0]
    schema.change_node_structure(node, ['SuperSection', 'Section', 'Segment'])

    assert node.depth == 3
    chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test')
    assert chunk.text == [[['Part1 part1'], ['Part1']], [['Part1']], [['Part1'], [], ['part1']]]
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 1:1:1', 'Shabbat 2a:5'],}), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 2:1:1', 'Delete Me, Part2 2:1'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 3:1', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part2 1:1', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part2 3', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Note().load({'ref': 'Delete Me, Part1 1:1:1'}), Note)
    assert library.get_index('Delete Me').get_alt_structure('alt').wholeRef == u'Delete Me, Part1 1:2:1-3:1:1'

    # decrease depth
    node = library.get_index('Delete Me').nodes.children[0]
    schema.change_node_structure(node, ['Section', 'Segment'])

    assert node.depth == 2
    chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test')
    assert chunk.text == [['Part1 part1', 'Part1'], ['Part1'], ['Part1', '', 'part1']]
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 1:1', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 2:1', 'Delete Me, Part2 2:1'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 3', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part2 1:1', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part2 3', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Note().load({'ref': 'Delete Me, Part1 1:1'}), Note)
    assert library.get_index('Delete Me').get_alt_structure('alt').wholeRef == u'Delete Me, Part1 1:2-3:1'
def change_tur():
    '''
    changes addressTypes of Tur nodes to ['Siman', 'Seif']
    :return:
    '''

    turim = library.get_index('Tur').nodes.children
    for tur in turim:
        change_node_structure(tur, tur.sectionNames, address_types=['Siman', 'Seif'])
def change_sa():
    '''
    changes addressTypes of Shulchan Arukh indexs to ['Siman', 'Seif']
    :return:
    '''

    SA_ind = [u'Shulchan Arukh, Choshen Mishpat', u'Shulchan Arukh, Even HaEzer', u'Shulchan Arukh, Orach Chayim']
    for title in SA_ind:
        node = library.get_schema_node(title)
        change_node_structure(node, node.sectionNames, address_types=['Siman', 'Seif'])
def change_tanakh():
    '''
    changes addressTypes of all Tanakh books to ['Perek', 'Pasuk']
    :return:
    '''

    tanakh = library.get_indexes_in_category("Tanakh")
    for book in tanakh:
        node = library.get_schema_node(book)
        change_node_structure(node,
                              node.sectionNames,
                              address_types=['Perek', 'Pasuk'])
예제 #5
0
def test_change_node_structure_simple():
    # increase depth
    node = library.get_index("MigrateBook").nodes
    schema.change_node_structure(node, ['SuperSection', 'Section', 'Segment'])

    assert node.depth == 3
    tc = TextChunk(Ref("MigrateBook 2:2:1"), "en", "Schema Test")
    assert tc.text == 'This should eventually end up in MigrateBook, Part 1, 2:2'

    # change depth back to 2
    node = library.get_index("MigrateBook").nodes
    schema.change_node_structure(node, ['Section', 'Segment'])
    assert node.depth == 2
    tc = TextChunk(Ref("MigrateBook 2:2"), "en", "Schema Test")
    assert tc.text == 'This should eventually end up in MigrateBook, Part 1, 2:2'
def change_mishneh_torah():
    '''
    changes addressTypes of all Mishneh Torah indexs to ['Perek' , 'Halkhah']
    :return:
    '''

    yad_list = library.get_indexes_in_category(u"Mishneh Torah")
    schema_yad_dict = {}
    for title in yad_list:
        schema_yad_dict[title] = library.get_schema_node(title)

    for node in schema_yad_dict.values():
        # excluding depth one ['Integer'] address types (ex, in category introduction)
        if len(node.sectionNames) != 2:
            continue
        change_node_structure(node, node.sectionNames, address_types=['Perek', 'Halakhah'])
예제 #7
0
def test_change_node_structure_complex():

    # increase depth
    node = library.get_index('Delete Me').nodes.children[0]
    schema.change_node_structure(node, ['SuperSection', 'Section', 'Segment'])

    assert node.depth == 3
    chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test')
    assert chunk.text == [[['Part1 part1'], ['Part1']], [['Part1']], [['Part1'], [], ['part1']]]
    blank_chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test Blank')
    assert len(blank_chunk.text) == 0
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 1:1:1', 'Shabbat 2a:5'],}), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 2:1:1', 'Delete Me, Part2 2:1'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 3:1', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part2 1:1', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part2 3', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Note().load({'ref': 'Delete Me, Part1 1:1:1'}), Note)
    assert library.get_index('Delete Me').get_alt_structure('alt').wholeRef == 'Delete Me, Part1 1:2:1-3:1:1'

    sheet_refs = get_sheet_refs(TEST_SHEET_ID)
    assert any('Delete Me, Part1 1:1:1' in s for s in sheet_refs)
    assert all(not re.search(r'Delete Me, Part 1 1:1$', s) for s in sheet_refs)

    # decrease depth
    node = library.get_index('Delete Me').nodes.children[0]
    schema.change_node_structure(node, ['Section', 'Segment'])

    assert node.depth == 2
    chunk = TextChunk(Ref('Delete Me, Part1'), 'en', 'Schema Test')
    assert chunk.text == [['Part1 part1', 'Part1'], ['Part1'], ['Part1', '', 'part1']]
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 1:1', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 2:1', 'Delete Me, Part2 2:1'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part1 3', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part2 1:1', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Link().load({'refs': ['Delete Me, Part2 3', 'Shabbat 2a:5'], }), Link)
    assert isinstance(Note().load({'ref': 'Delete Me, Part1 1:1'}), Note)
    assert library.get_index('Delete Me').get_alt_structure('alt').wholeRef == 'Delete Me, Part1 1:2-3:1'

    sheet_refs = get_sheet_refs(TEST_SHEET_ID)
    assert all('Delete Me, Part1 1:1:1' not in s for s in sheet_refs)
    assert any(re.search(r'Delete Me, Part1 1:1$', s) for s in sheet_refs)
예제 #8
0
__author__ = 'stevenkaplan'
from sefaria.helper.schema import change_node_structure
from sefaria.model import *
i = library.get_index("Complex Midrash Tanchuma")
nodes = i.nodes.children
for count, node in enumerate(nodes):
    print node
    if count < 2 or node._full_title['en'].find("Footnotes") >= 0:
        continue
    new_names = ["Siman", "Paragraph"]
    change_node_structure(node, new_names)