Aha! Of course. I should have thought of that. Mark pointed out the same thing. (And yes, my brief test had the metadata in the third paragraph.)

I'll try his handler when I get back to my Mac. If my guess is correct, the search won't take any measurable time at all and the primary delay will be loading the htmltext into a variable.

You guys are great.
--
Jacqueline Landman Gay | jac...@hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
On February 21, 2020 4:36:42 AM "Niggemann, Bernd via use-livecode" <use-livecode@lists.runrev.com> wrote:

Hi Jacque,

Jacque wrote:


> put the styledText of fld 1 into tDataA
> put 0 into tTotalChars
> put 0 into tStartChar
 >repeat with i = 1 to the number of elements in tDataA
   >put tDataA[i]["runs"] into tRunsA
   >repeat with j = 1 to the number of elements in tRunsA
   > put tRunsA[j] into tRunA
     >add the num of chars in tRunA["text"] to tTotalChars
    > if tRunA["metadata"] is pTag then
       >if tStartChar = 0 then
        > put tTotalChars - len(tRunA["text"]) + 3 into tStartChar
      > end if
     >else if tStartChar > 0 then
       >put tTotalChars - len(tRunA["text"]) into tEndChar
       >select char tStartChar to tEndChar of fld 1
       >select empty
       >set the backcolor of char tStartChar to tEndChar of fld 1 to "yellow"
       >return tStartChar & comma & tEndChar
    >end if
   >end repeat
 >end repeat


the styledArray does not include the returns at the end of a line. You have to add them if you address chars/codeUnits of the whole text. Initializing tTotalChars with -1 lets you add 1 to tTotalChars in each iterations of the outer repeat loop. -1 because the first line is not has no preceding return. Also add 1 to calculate tStartChar otherwise you point to the last char of preceding run.

 put -1 into tTotalChars -- note -1
 put 0 into tStartChar
 repeat with i = 1 to the number of elements in tDataA
   add 1 to tTotalChars -- account for returns
   put tDataA[i]["runs"] into tRunsA

-- note add 1
put tTotalChars - len(tRunA["text"]) +1 into tStartChar -- mark char 1 of target

Additionally in your implementation if the target run with the metadata you look for is the last run of the array nothing is returned.

Kind regards
Bernd
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode




_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to