(seq)
| 19 | |
| 20 | |
| 21 | def get_widths(seq): |
| 22 | widths = {} |
| 23 | r = [] |
| 24 | for v in seq: |
| 25 | if isinstance(v, list): |
| 26 | if r: |
| 27 | char1 = r[-1] |
| 28 | for (i,w) in enumerate(v): |
| 29 | widths[char1+i] = w |
| 30 | r = [] |
| 31 | elif isinstance(v, int): |
| 32 | r.append(v) |
| 33 | if len(r) == 3: |
| 34 | (char1,char2,w) = r |
| 35 | for i in xrange(char1, char2+1): |
| 36 | widths[i] = w |
| 37 | r = [] |
| 38 | return widths |
| 39 | #assert get_widths([1]) == {} |
| 40 | #assert get_widths([1,2,3]) == {1:3, 2:3} |
| 41 | #assert get_widths([1,[2,3],6,[7,8]]) == {1:2,2:3, 6:7,7:8} |