792 if realpos is None: |
792 if realpos is None: |
793 realpos = i |
793 realpos = i |
794 oldi = 0 |
794 oldi = 0 |
795 while insleft and i + len(v) >= index: |
795 while insleft and i + len(v) >= index: |
796 tmpval = v[oldi:index - i] |
796 tmpval = v[oldi:index - i] |
797 yield realpos, t, tmpval |
797 if tmpval: |
798 realpos += len(tmpval) |
798 yield realpos, t, tmpval |
|
799 realpos += len(tmpval) |
799 for it_index, it_token, it_value in itokens: |
800 for it_index, it_token, it_value in itokens: |
800 yield realpos, it_token, it_value |
801 yield realpos, it_token, it_value |
801 realpos += len(it_value) |
802 realpos += len(it_value) |
802 oldi = index - i |
803 oldi = index - i |
803 try: |
804 try: |
804 index, itokens = next(insertions) |
805 index, itokens = next(insertions) |
805 except StopIteration: |
806 except StopIteration: |
806 insleft = False |
807 insleft = False |
807 break # not strictly necessary |
808 break # not strictly necessary |
808 yield realpos, t, v[oldi:] |
809 if oldi < len(v): |
809 realpos += len(v) - oldi |
810 yield realpos, t, v[oldi:] |
|
811 realpos += len(v) - oldi |
810 |
812 |
811 # leftover tokens |
813 # leftover tokens |
812 while insleft: |
814 while insleft: |
813 # no normal tokens, set realpos to zero |
815 # no normal tokens, set realpos to zero |
814 realpos = realpos or 0 |
816 realpos = realpos or 0 |