Easier way to do text-movement algorithm?

Jim Witte jswitte at bloomington.in.us
Wed Aug 13 23:43:00 EDT 2003


   I'm making an source code rearrangement application where I need to 
rearrange different sections of a long piece of text.  I've basically 
got a structure that looks like

1: A
2: --
3: --
4: --
5: B
6: --
7: --
8: C
9: --
10: D

and I'd want to for instance move the 'A' section (lines 1-4 inclusive) 
to where the 'C' section is now (after the current line 7, pushing 
everything else out of the way.  I also want to keep track of the 
beginning and ending characters of the sections, so I can select any of 
them at will.

   Moving the sections around isn't much of a problem - I just copy a 
character range A and put it at point C, then delete the original range 
(so I don't have to keep track of what C becomes after I delete range 
A).  But then I'd have to recalculate all the values of the start and 
end points of the sections.

   What would be really nice is if Rev had a feature where I could 
either mark ranges of text, and then say "put section 1 of myText into 
section 3 of myText" and then "select section 1 of myText".  But it 
doesn't (that I know of)..

   I suppose I could also just store the sections of text in an array, 
and then use matchChunk on each element of that array (after the first 
function that changed) to get the start and end points.  But this is 
O(n) and invokes matchChunk every time (I do this to originally process 
the file and it takes about 3 seconds to do it)

   Another possibility would be to use matchChunk to find the start and 
end positions on the fly whenever I want to select a function.

   Any better ideas than these?

Jim




More information about the use-livecode mailing list