Описание файла type.txt
Файл должен содержать в себе функции описания валют или типов данных.
Синтаксис: settype("runame","engname","koef");
runame - русское название типа или валюты
engname - английское наименование
koef - коэффициент валюты, действительное число или NULL.
коэффициент указывается вручную, он же является курсов валют, по отношению друг к другу, и нужен для возможности приведения всех параметров
к одному типу валюты.
По умолчанию существует 4 базовых типа: рубли, гривны, доллары и числа.
Числа не предназначены для хранения валют, не содержит коэффициента, и не подлежит к другому приведению типа.
settype("Рубли","rub","1"); //коэффициент равен 1, значит рубли - базовый тип
settype("Доллары","usd","32"); //коэффициент равен 32, значит один доллар = 32 рубля
settype("Гривны","ukr","3.76221271"); //коэффициент равен 3.76221271, значит одна гривна = 3.76221271 рубля
settype("Число","numeric","NULL"); //коэффициент не указан, значит параметр не будет расчитываться.
rub, usd, ukr, numeric - английские названия типов, используются в функции "var"
Количество типов может быть неограничено. Типы должны описыватся на основе приведённых выше примеров.
Для создания нового, достаточно скопировать нужное описание в файл type.txt и перезапустить программу.
Описание парсера
Для создания нового скрипта, необходимо создать текстовый файл, на основе нижеследующих инструкций, скопировать его в папку "base",
и создать в программе новую запись о скрипте, на закладке "Сервисы".
Функция base64:
base64(/text/);
Функция позволяет кодировать строку "text" в base64.
Функцию можно использовать в описании #param, #url, #header
Описание функций value и summ:
value(/regexp/);
Функция, результатом которой является строка, найденная в соответствии с шаблоном, указанным в качестве аргумента функции
используя синтаксис регулярных выражений. Из всего выражения, результатом будет считаться первая в строке группировка символов.
После первого совпадения текста в шаблоном, поиск прекращается, и возвращается найденное значение
Например: value(/test([a-zA-Z]+)123([0-9]+)aqw/) // return ([a-zA-Z]+)
value(/test[a-zA-Z]+123([0-9]+)aqw/) // return ([0-9]+)
Все системные символы, используемые в тексте, должны быть экранированы слешем "\".
Подробнее про синтаксис можно прочитать: http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F
summ(/regexp/);
Функция идентичная value, с разницей в том, что она ищет все совпадения текста, и суммирует их.
Результатом функции, как и найденными значениями, должно быть число вещественного типа.
Для поиска функции используют текст, который был загружен на предыдущем шаге. Исключением является функция return, поиск в которой производится
по тексту, загруженному в текущем шаге.
Пример использования функий:
Пусть дан текст - "test12tees13dqwd14tes15"
value(/([0-9]+)/); // return "12"
summ(/([0-9]+)/); // return 12+13+14+15 = "54"
В области "param" описываются входные и выходные параметры сайта
Количество входящих и выходящих параметров не ограничено
var("runame","engname","datatype");
// функцией var описываются переменные, которые скрипту необходимо расчитать, они же
// отображаются пользователю
// runame - имя параметра на русском языке, например "Баланс"
// engname - имя переменной на английском, она же фигурируют в скрипте
// datatype - тип данных параметра, соответствует валюте, в которой хранится параметр, указывается английское имя валюты, описанное в файле type.txt
set("runame","engname");
// функцией set описываются переменные для доступа к аккаунту, которые вводит пользователь: логин, пароль, email и прочее.
// runame - имя на русском
// engname - на английском
В областях "step" описываются последовательности получения и обработки информации
Область может быть описана многократно, и обрабатывается сверху в низ.
#url="http://site.ru/auth";
// Параметр #url указывает, куда именно нужно обращать запрос скрипта.
// Может содержать в себе функции value и summ, которые расчитывают своё значения,
// используя результаты предыдущего шага
// #url="http://site.ru/auth?param=value(/regexp/)¶m2=summ(/regexp/)"; и т.д.
#method="POST or GET";
// #method указывает какой тип запроса использовать, GET или POST. Если параметр не объявлен, то используется метод GET.
#param="paramname={$set_engname} or|and value or|and summ or|and text";
// #param сообщаяет параметры используемые в POST запросе. В описании параметра можно использовать входящие переменные, объявленные функцией set
// используя следующий синтаксис: {$set_engname}
// функции "value" и "summ", которые расчитывают своё значения, используя результаты предыдущего шага
// так же можно использовать простой текст, и совокупность текста и функций: #param="set=value(/regexp/)summ(/regexp/)text" - в результате текст "склеится"
// описание #param может быть использовано многократно
#header="headername:{$set_engname} or|and value or|and summ or|and text";
// #header сообщает включения, которыми необходимо дополнить запрос. Описание идентично #param. Можно использовать функцию base64(/text/),
// которая позволяет кодировать в base64
SetUtf8; //необ.
// SetUtf8 сообщает, что кодировка страницы сайта - Utf8, и автоматически раскодирует в Ansi
SetKoi8; //необ.
// SetKoi8 сообщает, что кодировка страницы сайта - Koi8, и автоматически раскодирует в Ansi
Error(0);
// Error(0) сообщаяет что нужно игнорировать ошибку, когда сервер не отдаёт результат
return("var_engname",value or|and summ or|and float);
// return сообщает, что после выполнения текущего шага, скрипт должен расчитать указанную переменную.
// первый аргумент функции - английское название нужной переменной, объявленной в разделе param, функцией var
// второй параметр должен содержать функцию, либо совокупность функций и действительных чисел
// данный аргумент поддерживает математические операции, сложение, вычитание, деление, умножение, операции со скобками
// результатом расчёта должно быть действительное число
// Примеры аргумента:
// return("var",value(/regexp/));
// return("var",summ(/regexp/));
// return("var",(value(/regexp/)+summ(/regexp/))*2.5) и прочее.