parseText: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (fixed comment formatting and moved categories from comment section into page section)
m (Text replacement - "AgentRevolution" to "AgentRev")
(55 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Command|Comments=
{{RV|type=command
____________________________________________________________________________________________


| arma |Game name=
|game1= ofpe
|version1= 1.00


|1.00|Game version=
|game2= arma1
____________________________________________________________________________________________
|version2= 1.00


| Creates a structured text by parsing the given XML description. Do not use [[parseText]] when displaying a localized text from [[Stringtable.xml]].<br>
|game3= arma2
A detailed explanation of all formatting possibilities can be found at [[Structured Text]]. |DESCRIPTION=
|version3= 1.00
____________________________________________________________________________________________


| [[parseText]] text |SYNTAX=
|game4= arma2oa
|version4= 1.50


|p1= text: [[String]] |PARAMETER1=
|game5= tkoh
|version5= 1.00


| [[Structured Text]] |RETURNVALUE=
|game6= arma3
____________________________________________________________________________________________
|version6= 0.50
 
|x1= <code>[[private]] _Stxt = [[parseText]] "First line<img image='data\isniper.paa'/><nowiki><br/></nowiki>Second line";</code> |EXAMPLE1=


|x2= <code>[[hintSilent]] [[parseText]] [[format]]["<t size='1.25' font='Zeppelin33' color='#ff0000'>%1 lives remaining.</t>", 12];</code> |EXAMPLE2=
|gr1= Strings


|x3= <code>[[private]] _clickableLink = [[parseText]] "<nowiki><a href='http://arma3.com'>A3</a></nowiki>";</code> |EXAMPLE3=
|gr2= Structured Text


____________________________________________________________________________________________
|descr= Creates a structured text by parsing the given XML description. Do not use [[parseText]] when displaying a localized text from [[Stringtable.xml]].<br>
A detailed explanation of all formatting possibilities can be found at [[Structured Text]].


| [[Structured Text]], [[composeText]], [[text]], [[localize]], [[ctrlSetStructuredText]] |SEEALSO=
|s1= [[parseText]] text
 
|p1= text: [[String]]
 
|r1= [[Structured Text]]
 
|x1= <sqf>private _Stxt = parseText "First line<img image='data\isniper.paa'/><br/>Second line";</sqf>
 
|x2= <sqf>hintSilent parseText format["<t size='1.25' font='Zeppelin33' color='#ff0000'>%1 lives remaining.</t>", 12];</sqf>
 
|x3= <sqf>private _clickableLink = parseText "<a href='http://arma3.com'>A3</a>";</sqf>
 
|seealso= [[Structured Text]] [[composeText]] [[text]] [[localize]] [[ctrlSetStructuredText]]
}}
}}


[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands OFP Elite |{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_Variables|{{uc:{{PAGENAME}}}}]]


<h3 style="display:none">Notes</h3>
<dl class="command_description">
<dl class="command_description">


<!-- Note Section BEGIN -->
<dd class="notedate">Posted on 1 September 2016</dd>
<dd class="notedate">Posted on 1 September 2016
<dt class="note">[[User:Dr_Eyeball|Dr_Eyeball]]</dt>
<dt class="note>[[User:Dr_Eyeball|Dr_Eyeball]]
<dd class="note">To convert a structured text back to a string type, just use:
<dd class="note">To convert a structured text back to a string type, just use:
<code>_str = [[str]] [[parseText]] _structuredText;</code>
<sqf>_str = str parseText _structuredText;</sqf>
 
<!-- Note Section END -->
</dl>
 
<h3 style="display:none">Bottom Section</h3>


<!-- CONTINUE Notes -->
<dt></dt>
<dl class="command_description">
<dd class="notedate">Posted on 2017-09-01 - 13:23 (UTC)</dd>
<dd class="notedate">Posted on September 1, 2017 - 13:23 (UTC)</dd>
<dt class="note">[[User:AgentRev|AgentRev]]</dt>
<dt class="note">[[User:AgentRevolution|AgentRev]]</dt>
<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 {{Link|https://en.wikipedia.org/wiki/Character_encodings_in_HTML#XML_character_references|XML entities}} as a precaution beforehand, otherwise the result might be corrupted.
<code>private _encodeText =
<sqf>private _escapeXML =
{
{
private _specialChars = [38, 60, 62, 34, 39]; //  &amp; < > " '
_this
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;
regexReplace ["&", "&amp;"]
private _chars = [];
regexReplace ["<", "&lt;"]
private "_i";
regexReplace [">", "&gt;"]
 
regexReplace ['"', "&quot;"]
{
regexReplace ["'", "&apos;"]
_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 _name = '<A&M> Paul "Bear" Bryant';
private _redName = parseText format ["<t color='#ff0000'>%1</t>", _encodedName]; </code>
private _escapedName = _name call _escapeXML;
private _redName = parseText format ["<t color='#ff0000'>%1</t>", _escapedName];</sqf>
</dd>
</dd>
</dl>
</dl>
<!-- DISCONTINUE Notes -->


<!-- CONTINUE Notes -->
{{Note
<dl class="command_description">
|user= Samatra
<dd class="notedate">Posted on March 20, 2020 - 19:48 (UTC)</dd>
|timestamp= 20231013120233
<dt class="note">[[User:Dscha|Dscha]]</dt>
|text= Here is a useful script snippet to safely use angled braces and ampersand in structured texts:
<dd class="note">
<sqf>_string  regexReplace ["&", "&amp;"] regexReplace ["<", "&lt;"]</sqf>
When using [[parseText]] on an RscStructuredText control, with '''custom Attributes''' set (extra config Class), it needs to be in the same line as [[ctrlSetStructuredText]]: <br>
}}
<code>_text = "abc";
_ctrl [[ctrlSetStructuredText]] [[parseText]] _text;
</code><br>
The following Code would use '''none''' of the custom Attributes of the selected Control, instead it falls back to Standard Values (Font, Size, Color, Align, etc)
<code>_text = [[parseText]] "abc";
_ctrl [[ctrlSetStructuredText]] _text;
</code>
</dd>
</dl>
<!-- DISCONTINUE Notes -->

Revision as of 23:07, 4 May 2024

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.
A detailed explanation of all formatting possibilities can be found at Structured Text.
Groups:
StringsStructured Text

Syntax

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

Examples

Example 1:
private _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:
private _clickableLink = parseText "<a href='http://arma3.com'>A3</a>";

Additional Information

See also:
Structured Text composeText text localize ctrlSetStructuredText

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


Posted on 1 September 2016
Dr_Eyeball
To convert a structured text back to a string type, just use:
_str = str parseText _structuredText;
Posted on 2017-09-01 - 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, otherwise the result might be corrupted.
private _escapeXML = { _this regexReplace ["&", "&amp;"] regexReplace ["<", "&lt;"] regexReplace [">", "&gt;"] regexReplace ['"', "&quot;"] regexReplace ["'", "&apos;"] }; private _name = '<A&M> Paul "Bear" Bryant'; private _escapedName = _name call _escapeXML; private _redName = parseText format ["<t color='#ff0000'>%1</t>", _escapedName];
Samatra - c
Posted on Oct 13, 2023 - 12:02 (UTC)
Here is a useful script snippet to safely use angled braces and ampersand in structured texts:
_string regexReplace ["&", "&amp;"] regexReplace ["<", "&lt;"]