| 41 | #assert get_widths([1,[2,3],6,[7,8]]) == {1:2,2:3, 6:7,7:8} |
| 42 | |
| 43 | def get_widths2(seq): |
| 44 | widths = {} |
| 45 | r = [] |
| 46 | for v in seq: |
| 47 | if isinstance(v, list): |
| 48 | if r: |
| 49 | char1 = r[-1] |
| 50 | for (i,(w,vx,vy)) in enumerate(choplist(3,v)): |
| 51 | widths[char1+i] = (w,(vx,vy)) |
| 52 | r = [] |
| 53 | elif isinstance(v, int): |
| 54 | r.append(v) |
| 55 | if len(r) == 5: |
| 56 | (char1,char2,w,vx,vy) = r |
| 57 | for i in xrange(char1, char2+1): |
| 58 | widths[i] = (w,(vx,vy)) |
| 59 | r = [] |
| 60 | return widths |
| 61 | #assert get_widths2([1]) == {} |
| 62 | #assert get_widths2([1,2,3,4,5]) == {1:(3,(4,5)), 2:(3,(4,5))} |
| 63 | #assert get_widths2([1,[2,3,4,5],6,[7,8,9]]) == {1:(2,(3,4)), 6:(7,(8,9))} |