Форматированный текст представляет собой
форматную строку с тэгами подстановки. Это WString, содержащий правильно форматированную строку XHTML, возможно, с CSS-тэгами и с тэгами подстановки значений:
подстановка текстовых значений <r name="..."/>
подстановка CSS-класса <rs class="...">...</rs>
и какие-либо подстановочные значения, подставляемый в тэги <r/> и </rs>
Поддерживаются:
базовые тэги
<default/>
<span/>
<p/>
CSS-тэги.
Полный список см. в common.GetCSSList()
В скриптах ValuedText - это специальный вариант userdata.
Перегруженные операции
# - взятие длины ValuedText. Важно! Считается по числу отображаемых символов, длина тегов оформления не учитывается
ValuedText создаётся с помощью common.CreateValuedText( values )
Замечание. Lua работает с userdata по ссылке, а не по значению. Поэтому, в частности, для создания отдельной копии ValuedText нужно пользоваться специальной функцией (CreateCopy).
Подставляются новые значения с помощью интерфейсного методов SetTextValues( self, values ), SetVal( self, key, value ).
Для подстановки используются только тэги <r/> и <rs>...</rs>.
В качестве подстановочных значений для тэга <r/> можно использовать WString, объекты ValuedText или ValuedObject.
В тэг <rs>...</rs> можно подставлять только имеющиеся CSS-классы (их названия типа string).
Поиск тэга подстановки производится по значению аттрибута "name" для тэга <r/> или значению аттрибута "class" тэга <rs>...</rs>. Эти тэги не должны содержать нетребующихся для форматирования аттрибутов. Если необходимый тэг <r/> не найден, то подстановочное значение сохраняется и потом будет подставлено, если у ValuedText появится такой подстановочный тэг после установки каких-либо других подстановочных значений.
Форматирующий текст, являющийся related-текстом аддона "FormatText":
<html> <header> text1 </header> <rs class="class01"> text2 <r name="value01"/> </rs> </html>
Скрипт:
local valuedText = common.CreateValuedText{ format = common.GetAddonRelatedText( "FormatText" ), value01 = common.FormatInt( 2, "%d" ), class01 = "header" }