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.')
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