Описание файла 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) и прочее.