Вход
Приветствую Вас Гость
 

easy.math.qsp v. 2.4.0

Вспомогательные функции

get.word.inPos

Функция из строки вида aaa|bbb|ccc|...|yyy|zzz получает подстроку, стоящую в указанной позиции. Подстроки помещаются между разделителями. По умолчанию разделителем является вертикальная черта.

$args[0] - строка
 args[1] - позиция, из которой нужно получить подстроку.
$args[2] - разделитель. По умолчанию в качестве разделителя используется вертикальная черта.

Результат работы функции:

Заготовленная строка:

$text="Январь|Февраль|Март|Апрель|Май|Июнь|Июль|Август|Сентябрь|Октябрь|Ноябрь|Декабрь"

Примеры работы функции:

$func('get.word.inPos',$text,2)="Февраль"
$func('get.word.inPos',$text,5)="Май"
$func('get.word.inPos',$text,8)="Август"
$func('get.word.inPos',$text,11)="Ноябрь"
$func('get.word.inPos',$text,14)="Декабрь"
$func('get.word.inPos',$text,2,"ь")="|Феврал"
$func('get.word.inPos',$text,5,"р")="ель|Май|Июнь|Июль|Август|Сентяб"
$func('get.word.inPos',$text,8,"е")="кабрь"
$func('get.word.inPos',$text,11,"я")="брь|Декабрь"
$func('get.word.inPos',$text,14,"а")="брь"
$func('get.word.inPos',$text,3,"брь")="рь|Нояб"

get.tag.num

Получает содержимое одиночного тега[1] из строки.

$args[0] - текст, из которого нужно извлечь содержимое тега.
$args[1] - корень тега. Можно указать ключ /h, чтобы вести проверку, соответствуют ли символы шестнадцатеричному числу; в этом случае, если содержимое тега не соответствует шестнадцатеричному числу, функция вернёт пустую строку.

Результат - только текстовое значение.

Примеры одиночных тегов с корнем tag:

tag:non_space_symbols
tag=#non_space_symbols
<tag:any symbols>
[tag:any symbols]
{tag:any symbols}
(tag:any symbols)
tag="any symbols"
tag='any symbols'

Первые два типа записей не должны содержать пробельных символов, остальные - могут. Тем не менее не рекомендуется использовать данную функцию для извлечения данных с пробельными символами.

Результат работы функции:

Заготовленная строка:

$text="[count:текст с пробелом] <cord:68> log:непробельные_символы color=#ff8899 tag='многа букав'"

Извлечённые значения:

$func('get.tag.num',$text,'count')="текст с пробелом"
$func('get.tag.num',$text,'cord')='68'
$func('get.tag.num',$text,'log')="непробельные_символы"
$func('get.tag.num',$text,'color')="ff8899"
$func('get.tag.num',$text,'tag')="многа букав"

get.tag.cont

Получает содержимое двойного тега из строки.

$args[0] - текст, содержащий тег.
$args[1] - корень тега.

Результатом может быть только текстовое значение.

Примеры двойных тегов с корнем tag:

 tag:any symbols:tag
[tag:any symbols:tag]
(tag:any symbols:tag)
<tag:any symbols:tag>
[tag]any symbols[/tag]
<tag>any symbols</tag>
Результат работы функции:

Заготовленная строка:

$text="[count:текст с пробелом:count] <cord:странный и непонятный текст:cord> log:п р о б е л ь н ы е и непробельные символы:log <color>ff8899</color> [tag]многа букав[/tag]"

Извлечённые значения:

$func('get.tag.cont',$text,'count')="текст с пробелом"
$func('get.tag.cont',$text,'cord')="странный и непонятный текст"
$func('get.tag.cont',$text,'log')="п р о б е л ь н ы е и непробельные символы"
$func('get.tag.cont',$text,'color')="ff8899"
$func('get.tag.cont',$text,'tag')="многа букав"

kill.var.olegus

Процедура, идею которой на форуме QSP изложил Olegus. Удаляет элемент массива по текстовому индексу. Работает как с текстовыми, так и с числовыми массивами.

$args[0] - имя массива.
$args[1 ... 8] - текстовые индексы. Процедура позволяет удалять одновременно до восьми элементов массива.

Результат работы процедуры:
$a['text']='56'
$a['for']='112'
$a['of']='9432'

gosub 'kill.var.olegus','$a','for'

$a['text']='56'
$a['for']=''
$a['of']='9432'

em.maxVar

Возвращает название переменной, содержащей максимальное значение.

$args[0] - имена переменных, или точные указания на ячейки массивов, перечисленные списком через запятую $args[1] ... $args[8] - каждый аргумент — отдельное имя переменной, или указание на конкретную ячейку массива, либо управляющая конструкция.

Пример:

$func('em.maxVar','old_mass','new_mass','mass[23]','mass[45]')

В $args[0] может быть не одно, а несколько имён переменных или конкретных ячеек массива, разделённых запятыми:

$func('em.maxVar','old_mass_1,oldmass,old_mass_2,oldold[1],oldold[13],oldold["textindex"]','new_mass','mass[23]','mass[45]')

При указании текстовых индексов для элементов массива в таком списке недопустимо, чтобы в этих текстовых индексах присутствовали запятые. Для указания таких ячеек массива используйте аргументы с $args[1] по $args[8], либо замените в индексах запятые на %&#44;%.

Если нужно провести поиск максимального среди всех значений массива, можно использовать ключ /arr, чтобы указать, что данное имя является не просто именем переменной (то есть нулевой ячейки массива), но и всего массива.

$func('em.maxVar','old_mass_1,oldmass,old_mass_2,oldold/arr','new_mass/arr','mass[23]','mass[45]')

В последнем аргументе (номер аргумента при этом не важен) можно использовать управляющие конструкции. Аргументы после аргумента с управляющими конструкциями будут проигнорированы.

Список управляющих конструкций:

  • [list] - в этом режиме функция возвращает список всех имён переменных, содержащих максимальное значение, если это значение присутствует во всех этих переменных.
  • [max] - в этом режиме функция производит поиск максимального значения. Режим по умолчанию, т.е. можно не указывать.
  • [min] - в этом режиме функция производит поиск минимального значения. Имеет приоритет над [max], если указаны оба.
$func('em.maxVar','oldold/arr,new_mass/arr','mass[23]','[list]','mass[45]')
Результат работы функции:
old_mass[0]=788
old_mass[1]=136
old_mass[2]=788
old_mass[3]=177
old_mass[4]=75
old_mass[5]=97
old_mass[6]=649
old_mass[7]=75

$func('em.maxVar','old_mass/arr')
! 'old_mass[0]'
$func('em.maxVar','old_mass/arr','[list]')
! 'old_mass[0]
    old_mass[2]'

$func('em.maxVar','old_mass/arr','[list][min]')
! 'old_mass[4]
    old_mass[7]'

Скорость работы функции 4 мс на 100 000 значений. Или 4 секунды на 10 000 000 значений.

em.minVar

Возвращает название переменной, содержащей минимальное значение.

$args[0] - имена переменных, или точные указания на ячейки массивов, перечисленные списком через запятую $args[1] ... $args[8] - каждый аргумент — отдельное имя переменной, или указание на конкретную ячейку массива, либо управляющая конструкция.

Пример:

$func('em.minVar','old_mass','new_mass','mass[23]','mass[45]')

В $args[0] может быть не одно, а несколько имён переменных или конкретных ячеек массива, разделённых запятыми:

$func('em.minVar','old_mass_1,oldmass,old_mass_2,oldold[1],oldold[13],oldold["textindex"]','new_mass','mass[23]','mass[45]')

При указании текстовых индексов для элементов массива в таком списке недопустимо, чтобы в этих текстовых индексах присутствовали запятые. Для указания таких ячеек массива используйте аргументы с $args[1] по $args[8], либо замените в индексах запятые на %&#44;%.

Если нужно провести поиск минимального среди всех значений массива, можно использовать ключ /arr, чтобы указать, что данное имя является не просто именем переменной (то есть нулевой ячейки массива), но и всего массива.

$func('em.minVar','old_mass_1,oldmass,old_mass_2,oldold/arr','new_mass/arr','mass[23]','mass[45]')

В последнем аргументе (номер аргумента при этом не важен) можно использовать управляющие конструкции. Аргументы после аргумента с управляющими конструкциями будут проигнорированы.

Список управляющих конструкций:

  • [list] - в этом режиме функция возвращает список всех имён переменных, содержащих минимальное значение, если это значение присутствует во всех этих переменных.
$func('em.minVar','oldold/arr,new_mass/arr','mass[23]','[list]','mass[45]')
Результат работы функции:
old_mass[0]=788
old_mass[1]=136
old_mass[2]=788
old_mass[3]=177
old_mass[4]=75
old_mass[5]=97
old_mass[6]=649
old_mass[7]=75

$func('em.minVar','old_mass/arr')
! 'old_mass[4]'
$func('em.minVar','old_mass/arr','[list]')
! 'old_mass[4]
    old_mass[7]'
$func('em.minVar','old_mass/arr','[list][max]') & ! в данном случае поиск максимального работать не будет!!!
! 'old_mass[4]
    old_mass[7]'

Данная функция является надстройкой над функцией em.maxVar.

em.var.getType

Функция получает тип переменной.

$args[0] - имя переменной/массива. Можно указывать название непосредственно переменной/массива, или конкретную ячейку масссива.
$result - в результате функция возвращает строку:
  • 'both' - этот результат означает, что существуют как текстовое, так и числовое значение для указанной переменной. В плеерах версии 5.7.0 и ниже в одном массиве под одним и тем же индексом можно хранить как текстовое так и числовое значение. Например:
    $varname[1]='text' & varname[1]=234
    В этом случае функция вернёт строку 'both'
  • 'string' - этот результат означает, что переменная содержит только текстовое значение отличное от значения переменной по умолчанию.
  • 'number' - этот результат означает, что переменная содержит только числовое значение отличное от значения переменной по умолчнаию.
  • 'empty' - этот результат означает, что переменная не создана, либо содержит значение по умолчанию, текстовое и числовое.

Вызов:

$func('em.var.getType''$имя_переменной')
$func('em.var.getType''array["string"]')

Символ "$" перед названием переменной при определении типа роли не играет.

Обратите внимание: функция написана для версии плеера 5.7.0 и ниже, поэтому она возвращает результат сообразно принципу работы массивов для плееров версии 5.7.0 и ниже.

Проверить тип локальных переменных с помощью данной функции нельзя.

Примеры:
! заранее заданные значения
$string='text'
number=123
$varname[0]='text' & varname[0]=123
$emptyvar[0]=''
emptyvar[1]=0
! результат работы функции
$func('em.var.getType','$string')='string'
$func('em.var.getType','number')='number'
$func('em.var.getType','$number')='number'
$func('em.var.getType','string')='string'
$func('em.var.getType','$varname')='both'
$func('em.var.getType','$emptyvar[0]')='empty'
$func('em.var.getType','emptyvar[1]')='empty'

#re.rgb#

Функция обратная функции rgb, встроенной в QSP. То есть данная функция наоборот: переводит числовой код цвета в три составляющие.

args[0] - числовой код цвета.
$args[1] - управляющая конструкция. Указывает, какую составляющую мы хотим получить (можно комбинировать):
  • [red] - красная составляющая,
  • [green] - зелёная составляющая,
  • [blue] - синяя составляющая.
$result или result - функция возвращает все три составляющие в виде строки текста (если указать хотя бы два управляющих слова или не указать ни одного), или возвращает в виде числа одну составляющую (если указать одну управляющую конструкцию).
Результат работы функции:
yellow=rgb(255,255,0)
$func('#re.rgb#', yellow)='255|255|0'
func('#re.rgb#', yellow, '[red]')=255
func('#re.rgb#', yellow, '[green]')=255
func('#re.rgb#', yellow, '[blue]')=0

knaki=rgb(240,230,140)
$func('#re.rgb#', knaki, '[blue][red]')='240|230|140'
func('#re.rgb#', knaki, '[red]')=240
func('#re.rgb#', knaki, '[green]')=230
func('#re.rgb#', knaki, '[blue]')=140
- [test]

Примечания:

[1] Теги - это метки в тексте, которые отмечают некоторую информацию. В контексте данного руководства и связанных с библиотекой программ различаются одиночные и двойные теги. Одиночные теги отличаются тем, что не требуют закрытия. Двойные теги состоят из открывающего и закрывающего элементов. Содержимое тегов - это информация, которую они отмечают, или выделяют. Пример: <p>Текст параграфа</p> - здесь мы видим открывающий и закрывающий элементы тега 'p', между которыми размещён текст. В контексте данного руководства 'p' — это корень тега, — а текст, размещённый между элементами тега, называется содержимым тега.

Наверх