J'ai un tampon de type texte 2D (essentiellement List<List<Object>>
), indexé par des coordonnées (ligne, col). Chaque rangée peut avoir une longueur arbitraire.Mappage d'un ensemble d'intervalles au tampon de texte 2D avec synchronisation du changement de texte
Soit pos = (row, col)
. Un intervalle est ensuite défini par (fromPos, toPos)
.
Le tampon de texte peut être modifié par l'insertion et la suppression de caractères:
void addRow(int rowIndex, Row<T> newRow);
void removeRow(int rowIndex);
void insert(int row, int col, Collection<? extends T> els);
void delete(int row, int col, int count);
Comment puis-je tenir compte des changements dans le texte en position d'intervalles? Les intervalles sont imbriqués, mais pas strictement.
Le problème principal est que les intervalles peuvent être vides et que l'ordre et l'imbrication des intervalles doivent être préservés.
Par exemple:
0 1 2 3 4 (interval number) [a[bcd[]][][ef]gh] (text) 0 123 45 67 (char index)
après insertion de X
dans le 3ème intervalle (position absolue 4) devrait devenir
0 1 2 3 4 (interval number) [a[bcd[]][X][ef]ghijk] (text)
Quelles sont quelques façons de stocker des intervalles pour être en mesure de tenir compte des changements le texte correctement et efficacement?