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

easy.math.qsp v. 3.1.0

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

em.str.getWord

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

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

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

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

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

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

@em.str.getWord($text,2) & !@ "Февраль"
@em.str.getWord($text,5) & !@ "Май"
@em.str.getWord($text,8) & !@ "Август"
@em.str.getWord($text,11) & !@ "Ноябрь"
@em.str.getWord($text,14) & !@ "Декабрь"
@em.str.getWord($text,2,"ь") & !@ "|Феврал"
@em.str.getWord($text,5,"р") & !@ "ель|Май|Июнь|Июль|Август|Сентяб"
@em.str.getWord($text,8,"е") & !@ "кабрь"
@em.str.getWord($text,11,"я") & !@ "брь|Декабрь"
@em.str.getWord($text,14,"а") & !@ "брь"
@em.str.getWord($text,3,"брь") & !@ "|Ноя"

em.tag.getNum

Получает содержимое одиночного тега[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='многа букав'"

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

@em.tag.getNum($text,'count') & !@ "текст с пробелом"
@em.tag.getNum($text,'cord') & !@ '68'
@em.tag.getNum($text,'log') & !@ "непробельные_символы"
@em.tag.getNum($text,'color') & !@ "ff8899"
@em.tag.getNum($text,'tag') & !@ "многа букав"
@em.tag.getNum($text,'tag/h') & !@ не выведет ничего
@em.tag.getNum($text,'color/h') & !@ "ff8899"

em.tag.getCont

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

$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]"

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

@em.tag.getCont($text,'count') & !@ "текст с пробелом"
@em.tag.getCont($text,'cord') & !@ "странный и непонятный текст"
@em.tag.getCont($text,'log') & !@ "п р о б е л ь н ы е и непробельные символы"
@em.tag.getCont($text,'color') & !@ "ff8899"
@em.tag.getCont($text,'tag') & !@ "многа букав"

em.maxVar

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

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

Пример:

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

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

@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, чтобы указать, что данное имя является не просто именем переменной (то есть нулевой ячейки массива), но и всего массива.

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

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

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

  • [list] - в этом режиме функция возвращает список всех имён переменных, содержащих максимальное значение, если это значение присутствует во всех этих переменных.
  • [max] - в этом режиме функция производит поиск максимального значения. Режим по умолчанию, т.е. можно не указывать.
  • [min] - в этом режиме функция производит поиск минимального значения. Имеет приоритет над [max], если указаны оба.
@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

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

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

em.minVar

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

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

Пример:

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

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

@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, чтобы указать, что данное имя является не просто именем переменной (то есть нулевой ячейки массива), но и всего массива.

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

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

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

  • [list] - в этом режиме функция возвращает список всех имён переменных, содержащих минимальное значение, если это значение присутствует во всех этих переменных.
@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

@em.minVar('old_mass/arr')
! 'old_mass[4]'
@em.minVar('old_mass/arr','[list]')
! 'old_mass[4]
    old_mass[7]'
@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' - этот результат означает, что переменная не создана, либо содержит значение по умолчанию, текстовое и числовое.

Вызов:

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

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

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

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

em.deRGB

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

args[0] - числовой код цвета.
$args[1] - управляющая конструкция. При желании вы можете передать в этом параметре ключ '\wa', чтобы в результат была включена составляющая альфа-канала.
$result или result - функция возвращает все три составляющие в виде кортежа (если указать хотя бы два управляющих слова, или не указать ни одного), или возвращает в виде числа одну составляющую (если указать одну управляющую конструкцию).
Результат работы функции:
yellow=rgb(255,255,0)
seablue=rgb(0,98,98) & !@ #006262
red,green,blue = @em.deRGB(yellow)
*pl "<<red>>,<<green>>,<<blue>>" & !@ 255,255,0
red,green,blue = @em.deRGB(seablue)
*pl "<<red>>,<<green>>,<<blue>>" & !@ 0,98,98

knaki=rgb(240,230,140,100)
red,green,blue = @em.deRGB(knaki)
*pl "<<red>>,<<green>>,<<blue>>" & !@ 240,230,140
red,green,blue,alpha = @em.deRGB(knaki,'/wa')
*pl "<<red>>,<<green>>,<<blue>>,<<alpha>>" & !@ 240,230,140,100

knaki=rgb(240,230,140,237)
red,green,blue = @em.deRGB(knaki)
*pl "<<red>>,<<green>>,<<blue>>" & !@ 240,230,140
red,green,blue,alpha = @em.deRGB(knaki,'/wa')
*pl "<<red>>,<<green>>,<<blue>>,<<alpha>>" & !@ 240,230,140,237

Примечания:

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

Aleks Versus'Easy Libraries'2013-

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-

Наверх