parseText: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 90: Line 90:
<dd class="note">
<dd class="note">
If you are parsing user-defined strings like player names, you may want to convert special characters to their [https://en.wikipedia.org/wiki/Character_encodings_in_HTML#XML_character_references XML entities] as a precaution beforehand:
If you are parsing user-defined strings like player names, you may want to convert special characters to their [https://en.wikipedia.org/wiki/Character_encodings_in_HTML#XML_character_references XML entities] as a precaution beforehand:
<code>private _encodedName = _name [[splitString]] "" [[apply]] {["&amp;amp;","&amp;lt;","&amp;gt;","&amp;quot;","&amp;apos;",_x] [[select]] (["&amp;","<",">",'"',"'",_x] [[find]] _x)} [[joinString]] "";
<code>private _encodeText =
{
private _specialChars = [38, 60, 62, 34, 39]; //  &amp; < > " '
private _convertTo = [[38,97,109,112,59], [38,108,116,59], [38,103,116,59], [38,113,117,111,116,59], [38,97,112,111,115,59]]; //  &amp;amp; &amp;lt; &amp;gt; &amp;quot; &amp;apos;
private _chars = [];
private "_i";
 
{
_i = _specialChars find _x;
if (_i isEqualTo -1) then { _chars pushBack _x } else { _chars append (_convertTo select _i) };
} forEach toArray param [0,"",[""]];
 
toString _chars
};
 
private _encodedName = _name call _encodeText;
private _redName = parseText format ["<t color='#ff0000'>%1</t>", _encodedName]; </code>
private _redName = parseText format ["<t color='#ff0000'>%1</t>", _encodedName]; </code>
</dd>
</dd>
</dl>
</dl>
<!-- DISCONTINUE Notes -->
<!-- DISCONTINUE Notes -->

Revision as of 01:26, 18 September 2017

-wrong parameter ("Arma") defined!-1.00
Hover & click on the images for description

Description

Description:
Creates a structured text by parsing the given XML description. Do not use parseText when displaying a localized text from stringtable.xml (see notes below).
Groups:
Uncategorised

Syntax

Syntax:
Structured Text = parseText text
Parameters:
text: String
Return Value:
Structured Text

Examples

Example 1:
_Stxt = parseText "First line<img image='data\isniper.paa'/><br/>Second line";
Example 2:
hintSilent parseText format["<t size='1.25' font='Zeppelin33' color='#ff0000'>%1 lives remaining.</t>", 12];
Example 3:
_clickableLink = parseText "<a href='http://arma3.com'>A3</a>";

Additional Information

See also:
Structured TextcomposeTexttextlocalizectrlSetStructuredText

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note

Notes

Posted on 22:07, 11 May 2007 (CEST)
Mondkalb, Spinor, HeliJunkie
You can also colorate your text. You just have to use following tag:
 <t color='#ffff00'>Your yellow text!</t> 

To change the size of your text, use this command:

 <t size='2.2'>Your bigger text!</t> 

To change text font, use:

 <t font='Zeppelin33'>Bold Text</t> 

To change horizontal alignment, use (parameter can be 'left', 'center', 'right'):

 <t align='center'>Centered Text</t> 

To change vertical alignment within a line, use (parameter can be 'top', 'middle', 'bottom'):

 <t valign='bottom'>Text at Line Bottom</t> 

To underline text, use:

 <t underline='true'>Underlined Text</t> 

To put shadow under text, use:

 <t shadow='true'><t shadowColor='#ff0000'>Text with Red Shadow</t></t> 

Following statements are valid too:

<t underline='1'>Underlined Text</t>
<t shadow='1'shadowColor='#ff0000'>Green shadow text</t>

Following fonts are valid (got from config):

<t font='Zeppelin32'>Zeppelin32 (normal text)</t>
<t font='Zeppelin33'>Zeppelin33 (bold text)</t>
<t font='Zeppelin33Italic'>Zeppelin33Italic (bold italic text)</t>
<t font='Bitstream'>Bitstream (same as Zeppelin32)</t>
<t font='TahomaB'>TahomaB (same as Zeppelin32)</t>
<t font='LucidaConsoleB'>LucidaConsoleB (like Courier)</t>
Posted on 21 March 2009
Spooner
Although there is a dedicated image command, parseText gives more options:
<img size='5' color='#ff0000' image='fish.paa'/>
Posted on 1 September 2016
Dr_Eyeball
To convert a structured text back to a string type, just use:
_str = str parseText _structuredText;

Bottom Section

Posted on September 1, 2017 - 13:23 (UTC)
AgentRev
If you are parsing user-defined strings like player names, you may want to convert special characters to their XML entities as a precaution beforehand: private _encodeText = { private _specialChars = [38, 60, 62, 34, 39]; // & < > " ' private _convertTo = [[38,97,109,112,59], [38,108,116,59], [38,103,116,59], [38,113,117,111,116,59], [38,97,112,111,115,59]]; // &amp; &lt; &gt; &quot; &apos; private _chars = []; private "_i"; { _i = _specialChars find _x; if (_i isEqualTo -1) then { _chars pushBack _x } else { _chars append (_convertTo select _i) }; } forEach toArray param [0,"",[""]]; toString _chars }; private _encodedName = _name call _encodeText; private _redName = parseText format ["<t color='#ff0000'>%1</t>", _encodedName];