easy.math.qsp v. 2.4.0
Вспомогательные функции
get.word.inPos
Функция из строки вида aaa|bbb|ccc|...|yyy|zzz
получает подстроку, стоящую в указанной позиции. Подстроки помещаются между разделителями. По умолчанию разделителем является вертикальная черта.
$args[
- строка
0
] args[
- позиция, из которой нужно получить подстроку.
1
]$args[
- разделитель. По умолчанию в качестве разделителя используется вертикальная черта.
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:any symbols>
[tag:any symbols]
{tag:any symbols}
(tag:any symbols)
tag="any symbols"
tag='any symbols'
Первые два типа записей не должны содержать пробельных символов, остальные - могут. Тем не менее не рекомендуется использовать данную функцию для извлечения данных с пробельными символами.
Результат работы функции:
Заготовленная строка:
Извлечённые значения:
$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>
Результат работы функции:
Заготовленная строка:
Извлечённые значения:
$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['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
]
Пример:
В $args[
может быть не одно, а несколько имён переменных или конкретных ячеек массива, разделённых запятыми:0
]
При указании текстовых индексов для элементов массива в таком списке недопустимо, чтобы в этих текстовых индексах присутствовали запятые. Для указания таких ячеек массива используйте аргументы с $args[
по 1
]$args[
, либо замените в индексах запятые на 8
]%,%
.
Если нужно провести поиск максимального среди всех значений массива, можно использовать ключ /arr
, чтобы указать, что данное имя является не просто именем переменной (то есть нулевой ячейки массива), но и всего массива.
В последнем аргументе (номер аргумента при этом не важен) можно использовать управляющие конструкции. Аргументы после аргумента с управляющими конструкциями будут проигнорированы.
Список управляющих конструкций:
[list]
- в этом режиме функция возвращает список всех имён переменных, содержащих максимальное значение, если это значение присутствует во всех этих переменных.[max]
- в этом режиме функция производит поиск максимального значения. Режим по умолчанию, т.е. можно не указывать.[min]
- в этом режиме функция производит поиск минимального значения. Имеет приоритет над[max]
, если указаны оба.
Результат работы функции:
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
]
Пример:
В $args[
может быть не одно, а несколько имён переменных или конкретных ячеек массива, разделённых запятыми:0
]
При указании текстовых индексов для элементов массива в таком списке недопустимо, чтобы в этих текстовых индексах присутствовали запятые. Для указания таких ячеек массива используйте аргументы с $args[
по 1
]$args[
, либо замените в индексах запятые на 8
]%,%
.
Если нужно провести поиск минимального среди всех значений массива, можно использовать ключ /arr
, чтобы указать, что данное имя является не просто именем переменной (то есть нулевой ячейки массива), но и всего массива.
В последнем аргументе (номер аргумента при этом не важен) можно использовать управляющие конструкции. Аргументы после аргумента с управляющими конструкциями будут проигнорированы.
Список управляющих конструкций:
[list]
- в этом режиме функция возвращает список всех имён переменных, содержащих минимальное значение, если это значение присутствует во всех этих переменных.
Результат работы функции:
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', '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]
- синяя составляющая.
$res
ult
или res
ult
- функция возвращает все три составляющие в виде строки текста (если указать хотя бы два управляющих слова или не указать ни одного), или возвращает в виде числа одну составляющую (если указать одну управляющую конструкцию).
Результат работы функции:
$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'
— это корень тега, — а текст, размещённый между элементами тега, называется содержимым тега.