Steve,<div><br></div><div>I&#39;m still uncertain about the most reasonable solution here. Forcing the requirement to quote strings in a mapfile looks fairly straightforward to use, but quoting strings in classObj.setText is a bit awkward. Wouldn&#39;t that be a solution to add quotes around a string in the interface file (class.i) if that hasn&#39;t yet been added by the user?</div>
<div><br></div><div>Best regards,</div><div><br></div><div>Tamas</div><div><br></div><div><br><br><div class="gmail_quote">2012/2/22 Lime, Steve D (DNR) <span dir="ltr">&lt;<a href="mailto:Steve.Lime@state.mn.us">Steve.Lime@state.mn.us</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal">msyytext/msyystring isn’t being truncated per se it’s just that a string with spaces is not valid in a mapfile. That is:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">  TEXT Sample Text<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">would normally generate a parsing error. In this case only the string Sample Text is being parsed and without the quotes only the text ahead of the space is matched. I suppose it’s possible to relax the string matching expression in maplexer.l
 when in EXPRESSION_STRING context to allow spaces and other characters.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Steve<span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> Tamas Szekeres [mailto:<a href="mailto:szekerest@gmail.com" target="_blank">szekerest@gmail.com</a>]
<br>
<b>Sent:</b> Wednesday, February 22, 2012 9:14 AM<br>
<b>To:</b> Lime, Steve D (DNR)<br>
<b>Cc:</b> <a href="mailto:mapserver-dev@lists.osgeo.org" target="_blank">mapserver-dev@lists.osgeo.org</a><br>
<b>Subject:</b> Re: [mapserver-dev] classObj.setText, text must be quoted<u></u><u></u></span></p>
</div><div><div></div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Checking the first character instead of the length would be a good solution for MapServer 6.0 and the earlier versions. But I&#39;m not sure how this would solve the same problem in trunk. Actually when getSymbol is failing we can obtain only
 a truncated text from msyytext/msyystring so we cannot use this to assign the value to the corresponding property. We should probably find out the reason why  msyytext/msyystring is truncated in this case or use the &quot;value&quot; argument of loadExpressionString
 instead. Does this make sense?<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Best regards,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Tamas<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><u></u> <u></u></p>
<div>
<p class="MsoNormal">2012/2/22 Lime, Steve D (DNR) &lt;<a href="mailto:Steve.Lime@state.mn.us" target="_blank">Steve.Lime@state.mn.us</a>&gt;<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:black">In 6.0 class-&gt;text is a true expressionObj, not a string as in previous versions so at least via SWIG setText() calls msLoadExpressionString().
 I think there could be a bug in that function at line 2169 (in trunk). Older versions of that function treat the input string as a the expression if parsing doesn&#39;t detect a delimited type. So does this version but in a different way:<br>

<br>
// trunk<br>
    exp-&gt;type = MS_STRING;<br>
    exp-&gt;string = msStrdup(msyystring_buffer);<br>
<br>
// 5.6 branch<br>
    exp-&gt;type = MS_STRING;<br>
    if((strlen(value) - strlen(msyytext)) == 2)<br>
      exp-&gt;string = strdup(msyytext); /* value was quoted */<br>
    else<br>
      exp-&gt;string = strdup(value); /* use the whole value */<br>
<br>
I&#39;ve got a feeling this has to do with escaping quotes where msyystring_buffer contains the escaped text. Perhaps we could do something like:<br>
<br>
    exp-&gt;type = MS_STRING;<br>
    if(... if first char in value is not a single or double quote ...)<br>
        exp-&gt;string = strdup(value);  /* use the whole value */<br>
    else<br>
        exp-&gt;string = msStrdup(msyystring_buffer);<br>
<br>
Alan, does this make sense or is there another way to know that escaping was processed?<br>
<br>
Steve<u></u><u></u></span></p>
<div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="color:black">
<hr size="2" width="100%" align="center">
</span></div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:black">From:</span></b><span style="font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;;color:black">
<a href="mailto:mapserver-dev-bounces@lists.osgeo.org" target="_blank">mapserver-dev-bounces@lists.osgeo.org</a> [<a href="mailto:mapserver-dev-bounces@lists.osgeo.org" target="_blank">mapserver-dev-bounces@lists.osgeo.org</a>] on behalf of Tamas Szekeres [<a href="mailto:szekerest@gmail.com" target="_blank">szekerest@gmail.com</a>]<br>

<b>Sent:</b> Tuesday, February 21, 2012 4:09 PM<br>
<b>To:</b> <a href="mailto:mapserver-dev@lists.osgeo.org" target="_blank">mapserver-dev@lists.osgeo.org</a><br>
<b>Subject:</b> [mapserver-dev] classObj.setText, text must be quoted</span><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Hi Devs, <u></u><u></u></span></p>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">By using the following mapscript example:<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">     <i>// creating a new map from scratch</i><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      mapObj map = new mapObj(null);</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      // adding a layer</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      layerObj layer = new layerObj(map);</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      // define the class</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      classObj classobj = new classObj(layer);</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black"> classobj.setText(&quot;Sample Text&quot;);</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      Console.WriteLine(&quot;Sample Text -&gt; &quot; + classobj.getTextString());</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black"> classobj.setText(&quot;Sample T&quot;);</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      Console.WriteLine(&quot;Sample T -&gt; &quot; + classobj.getTextString());</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black"> classobj.setText(&quot;\&quot;Sample T\&quot;&quot;);</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><i><span style="color:black">      Console.WriteLine(&quot;\&quot;Sample T\&quot; -&gt; &quot; + classobj.getTextString());</span></i><span style="color:black"><u></u><u></u></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">I got the following output (from trunk):<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Sample Text -&gt; &quot;Sample Text&quot;<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Sample T -&gt; &quot;Sample&quot;<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">&quot;Sample T&quot; -&gt; &quot;Sample T&quot;<u></u><u></u></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">6.0 branch produces this:<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Sample Text -&gt; &quot;Sample&quot;<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Sample T -&gt; &quot;Sample&quot;<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">&quot;Sample T&quot; -&gt; &quot;Sample T&quot;<u></u><u></u></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Do we have a requirement that the texts must be quoted which is passed to <i>classobj.setText?</i><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Best regards,<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Tamas<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><u></u> <u></u></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div></div></div>
</div>

</blockquote></div><br></div>