Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @="итерация алгоритма"
- * слева есть фрагмент
- * справа этот фрагмент смещён ниже
- // можно не искать до конца документа, достаточно упереться в следующий "старый" фрагмент
- // оказаться выше он не может, т.к. порядок изначальных фрагментов менять нельзя
- = значит между оригинальной и новой позицией появились новые фрагменты. тут по сути была "вставка"
- фрагментов, без замены оригинальных. рисуем фрагменты справа как новые, слева показываем вместо них дыру
- * справа этот фрагмент отсутствует вовсе
- * при поиске мы упёрлись в конец документа?
- * мы СРАЗУ упёрлись?
- // т.е. документ справа закончился, в то время как документ слева ещё нет
- = рисуем "изъятие", справа дыра
- * мы не сразу упёрлись
- // значит была замена
- = рисуем "замену" оригинального, на новые фрагменты (т.е. все до конца новой версии документа)
- * при поиске мы упрёлись в "старый" фрагмент
- * при поиске мы СРАЗУ же упёрлись в старый фрагмент?
- = значит оригинальный фрагмент был просто выкинут. рисуем "удаление", т.е. слева перечёркнутый фрагмент,
- а справа дыра
- * упёрлись не сразу
- = рисуем "замену" оригинального, на новые фрагменты (т.е. все до старого)
- * слева нет фрагмента
- // значит документ слева закончился, а справа ещё нет
- = рисуем "вставку", без замены
- @="алгоритм"
- * пробегаем по правой версии
- * помечая все несуществующие фрагменты слева как "новые", оставшиеся "старые", для удобства
- * пробегаем обе версии
- * помечаем "next", "nextIdx", "prev", "prevIdx"
- * пробегаем от первого до последнего фрагмента слева, а потом до последнего фрагмента справа
- * сравнение фрагментов происходит только по docIndex-ам
- * имеем два курсора (1 слева и 1 справа)
- * первым пробегом (который будет включать многочисленные поиск-пробеги справа) мы формируем список изменений, исходя из блока выше
- * вторым пробегом (уже по изменениям) пытаемся сгруппировать изменения слева, для подряд идущих (слева) фрагментов
- // алгоритма группировки и соответсвующей визуализации пока придумал =(
- * сформировав группы для показа, формируем "окружение" этих групп фрагментами: 1 выше, 1 ниже, для показа контекста
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement