Пример #1
0
def __self_test():
    ''' A very minimal test harness. Not very good, and really only tests break_field() so far. '''

    print('Begin self-test...')
    lines = ['\\lx test\n', '\sn\n\n1 \n']
    r = S.SFMRecord(lines).as_lists()
    __assert(r[0][0] == 'lx', '1 lx')
    __assert(r[0][1] == 'test\n', '1 lx val')
    __assert(r[1][0] == 'sn', '2 sn (known limitation)')
    __assert(r[1][1] == '\n\n1 \n', '2 sn val (known limitation)')

    lines = ["\l test\n", "\sn\n\n", "\de  blah\n"]
    r = S.SFMRecord(lines).as_lists()
    __assert(r[0][0] == 'l', '1 l')
    __assert(r[0][1] == 'test\n', '1 l val')
    __assert(r[1][0] == 'sn', '2 sn again')
    __assert(r[1][1] == '\n\n', '2 sn val again')
    __assert(r[2][0] == 'de', '3 de')
    __assert(r[2][1] == ' blah\n', '3 de val')

    print('Done with self-test.')
Пример #2
0
    def split_record(record, mkrs):
        ''' Given a record of type SFMRecord and a list of root markers, split it into multiple records.
        
        mkrs would typically be ['lx', 'se'], or just ['lx']
        '''

        words = record.find(mkrs)
        c = len(words)
        recs = []
        if c > 1:
            r = record.as_lists()
            i = 0
            while i < c:
                begin = words[i][1]
                if i >= c - 1:
                    end = len(r)
                else:
                    end = words[i + 1][1]
                wordlines = r[begin:end]
                recs.append(sfm.SFMRecord(wordlines))
                i += 1
        else:  # only one word
            recs.append(record)
        return recs