On 06/19/2017 11:22 AM, Rick Harrison via use-livecode wrote:
I have a nice example button image swap routine
written in JavaScript which I’d like to use in a .lc script.

To use HTML etc. within a .lc script I have to put
the statement in double quotes such as:

put “<html>”

or

put “<A HREF=‘http://www.google.com' <http://www.google.com'/>>”

where I have to substitute single quotes for the normal double quotes to make 
it work.

That’s fine until I have a statement that is already using both double and 
single quotes.
The statement still needs to be converted into a .lc script format.  The 
following statement
will get parsed the wrong way if one wants to put it into double quotes.

<A HREF="http://www.google.com"; onmouseover="movepic('button','pic-off.gif')" 
onmouseout="movepic('button','pic-on.gif')"><IMG NAME="button" SRC="pic-off.gif" ALT="Image"></A>

becomes:

put "<A HREF="http://www.google.com"; onmouseover="movepic('button','pic-off.gif')" 
onmouseout="movepic('button','pic-on.gif')"><IMG NAME="button" SRC="pic-off.gif" ALT="Image"></A>”

As you can see the above statement will not be parsed correctly.

Suggestions?

On a related note, if a user types in a word such as “can’t” into a field, the 
apostrophe gets interpreted as
a single quote and that messes up the parsing of various .lc script statements 
too.

How do you usually solve these issues?

There's a long-standing bug report about wanting to use single- and double- quotes interchangeably. But even that won't completely solve your problem here.

I usually resort to a general-purpose function that Ken Ray posted some years ago for quoting text when you can't do it explicitly:

function q pText
  return quote & pText & quote
end q

So you'd end up with

put "<A HREF=" & q("http://www.google.com";) && "onmouseover=" & q("movepic('button','pic-off.gif')") && "onmouseout=" & q("movepic('button','pic-on.gif')") && "><IMG NAME=" & q("button") && "SRC=" & q("pic-off.gif") && "ALT=" & q("Image") & "></A>”

and that should work even if it's a bit ungainly.
To make it more readable, I usually break that up with constants.
Something like:

constant kURL="http://www.google.com";
constant kOnAction="movepic('button','pic-on.gif')"
constant kOffAction="movepic('button','pic-off.gif')"
local sImageContent

function href pURL, pContent
  return "<A HREF=" & pURL & ">" & pContent & "</A>"
end href

put "<IMG NAME=" & q("button") && "SRC=" & q("pic-off.gif") && "ALT=" & q("Image") & ">" into sImageContent

put href(q(kURL) && "onmouseover=" & q(kOnAction) && "onmouseout=" & q(kOffAction), sImageContent)

--
 Mark Wieder
 ahsoftw...@gmail.com

_______________________________________________
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