HTMLText question
Phil Davis
revdev at pdslabs.net
Thu Dec 17 01:06:22 EST 2009
On 12/16/09 8:04 PM, Kay C Lan wrote:
> On Thu, Dec 17, 2009 at 2:49 AM, Robert Brenstein<rjb at robelko.com> wrote:
>
>
>> A tad safer and more general technique is to
>>
>> put "<box>" before word 2 of tHtml
>> put "</box>" after word 2 of tHtml
>>
>> As other said, variable have htmltext property, just the content which can
>> be html, so you need to work with it directly. Html comes into effect when
>> such a content is put into a field and then displayed to user.
>>
>> Robert
>>
>>
> I'm totally confused. I am not aware that variables have a htmlText
> property? When I try to access it I keep getting an error message.
>
You're right. Variables don't have an "htmlText" property, only fields
do. This agrees with the Rev docs description and is the way it really
works.
I think maybe Robert meant "variable DON'T have htmltext property", and
was saying you can put the htmlText of a field into a variable,
manipulate it, then set the htmlText of the field to the manipulated
contents of the variable to display it in rendered form.
> Secondly, using the keyword 'word' when dealing with htmlText doesn't seem
> to be a safe option to me at all, in fact it would be the last option I'd
> think of using. If a field contained multiple lines of words, formatted in
> all sorts of weird and wonderful ways, and the htmlText of one of those
> lines might look like this:
>
> <p><font color="#FF0000"><b>boink</b></font></p>
>
> If I were to use the keyword 'word', Rev considers
>
> <p><font
>
> to be the first word and the second word is
>
> color="#FF0000"><b>boink</b></font></p>
>
> putting "<box>" and"</box>" before and after any of these words will result
> in ill formed HTML.
>
> Granted, if you do a grep for>([^<]*)< you can extract just the content
> between the html tags and then using the 'word' keyword will work for you.
> But now that I appreciate that this original post is related to another post
> where I put forward the idea of using the 'token' keyword, I'll suggest it
> again. Doing grep and trying to keep track of where in a line of html text
> you are and what word needs to be replaced with what, plus needing to deal
> with all the punctuation marks that get included inside what Rev considers
> is a word, is very involved for this old brain and dare I say, unsafe or at
> least fraught with possible errors. Using token, there are only a few
> special characters you have to account for, you can then just run through
> every token and when you get a match:
>
> put "<box>"& token tTokenCounter of tHtmlText& "</box>" into token
> tTokenCounter of tHtmlText
>
> Probably not the fastest way, but relatively simple.
>
> HTH
>
I'll take simple over snazzy any day of the week. That way, when I come
back to it in six months I might be able to look at the code and
immediately know what it's doing! I love it when that happens.
Another approach I've taken is to reformat the htmlText into something
more given to processing, then process it, then restore the original
format. Like this:
on mouseUp
get withBoxTags(the htmlText of fld 1)
put it -- so you can inspect the htmltext output
set the htmlText of fld 1 to it
end mouseUp
function withBoxTags pHtmlText
-- replace existing CRs with a char not found in pHtmlText
replace cr with numToChar(250) in pHtmlText
-- reformat the text for processing
replace ">" with (">" & cr) in pHtmlText -- each ">" now ends a line
replace "<" with (cr & "<") in pHtmlText -- each "<" now starts a line
filter pHtmlText without empty -- remove blank lines
-- insert "box" tags
repeat for each line tLine in pHtmlText
if char 1 of tLine = "<" -- not a 'data' line
then put tLine & cr after tNewText
else put "<box>" & tLine & "</box>" & cr after tNewText
end repeat
-- restore original format
replace cr with empty in tNewText
replace numToChar(250) with cr in tNewText
-- return it to caller
return tNewText
end withBoxTags
The above code may not accomplish exactly what you're trying to do, but
it illustrates the idea.
--
Phil Davis
PDS Labs
Professional Software Development
http://pdslabs.net
More information about the use-livecode
mailing list