Новости

Обновление исправляет совместимость с Freenode после обновления этой сетью версии IRCd.

Вышел второй релиз-кандидат KVIrc 4.0

Ричард Столлман дал автограф проекту и пожелал успеха в разработке.

Image:Feed.png RSS

Материал из IRC клиент KVIrc.

Перейти к: навигация, поиск

Содержание

[править] Введение

KVS расшифровывается как KVirc Scripting. Это язык программирования, в котором совмещены принципы от C++,sh-скриптинга, perl, php. KVS создан как компромисс между скоростью, обширными возможностями и простотой реализации функций.

Он позволяет:

  • Создавать обработчики событий, генерируемых IRC сетью или действиями пользователя
  • Создавать новые команды(алиасы)
  • Изменять/добавлять/удалять элементы интерфейса, такие как всплывающие меню, панели инструментов, кнопки, диалоговые окна
  • Многое другое..

KVS содержит основные элементы как структурного, так и объектно-ориентированного программирования. В их число входят переменные, массивы, команды, объекты.

Для тестирования своих скриптов существует Тестер сценариев. Его можно открыть из главного меню Сценарии->Новый тестер сценариев

[править] Скрипты

Вы можете использовать KVS для реализации скриптов. Скрипт это конечное число KVS инструкций. Когда вы вводите команду в строке ввода KVIrc, вы фактически выполняете маленький однострочный скрипт. Вы можете сохранять более длинные скрипты в памяти KVIrc и выполнять их позднее. Скрипты также могут быть выполнены из внешних файлов при помощи команды parse.

[править] Hello world!

Эта документация содержит множество примеров скриптов. Они представлены в таких блоках кода:

echo Hello world!

Лучший способ эксперимента со скриптами это использование тестера сценариев, который можно вызвать из главного меню программы Сценарии->Новый тестер сценариев. Вы можете запускать сразу несколько тестеров, в каждом можно поместить по кусочку кода, и проверять его при разных условиях.

Некоторые простые примеры (как линия выше) могут быть введены в строке ввода любого окна. Помните что в таком случае команда должна быть предварена символом косой черты / для того чтобы была интерпретирована как скрипт. Окно ввода может быть сделано многострочным при помощи специальной кнопки справа от него.

[править] Основы синтаксиса

Скрипт содержит последовательность инструкций, разделенных при помощи перевода строки или символа ';'. Расположение инструкции в одной строке не требует символа ';' в конце, инструкции, расположенные в одну строку, обязательно должны быть разделены символом ';'. Самые часто используемые инструкции - это KVS команды. Команда выглядит как ключевое слово со списком параметров, разделенных пробелами. Самая простая команда в KVS это echo; она выводит весь свой список параметров в окно KVirc. Следующий пример скрипта использует только команду echo.

echo "This is the first line"
ECHO This is the second line;
echo "This is the third line"; echo This is still on the third line;
eChO "This is the fourth line"; Echo "This is still on the fourth line"

Как вы уже поняли знак ';' не обязателен в конце строки. Команды не чувствительны к регистру; 'echo' эквивалентно 'Echo', 'ECHO' или 'eChO'. Фактически, большая часть KVS регистронезависима. Другое интересное замечание, это то, что при выполнении данного скрипта вы не увидите кавычек, окружающих строки. Более подробная информация об этом будет описана далее.

Примечание (вы можете его пропустить):

Да, символ ';' может стать проблемой для тех, кто использует ';)' в конце IRC команд, таких как 'msg'. Она почти нерешаема (следует читать: ее решение слишком громоздко). Использование '|' или другого оператора разделения команд не решило бы проблему. Решение - экранирование этого символа:

echo You can do it now \;)

[править] Обработка параметров

Большинство команд принимает (а некоторые и требуют) список параметров. Например, команда join (которая используется для входа на IRC канал) принимает 2 параметра: первый это канал, на который нужно войти, второй это пароль канала. Упрощенный синтаксис для команды join выглядит следующим образом:

join <channel> [password]

Линия выше - пример синтаксиса команды. Все команды описаны подобным образом. join это команда и она полностью соответствует строке "join" в скрипте. <channel> это обязательный параметр: вы должны использовть вместо него реальное название канала, иначе запуск команды приведет к ошибке. Обязательные параметры здесь и далее будут заключаться в угловые скобки <>. [password] тоже является параметром. Употребление в квадратных скобках говорит о том, что параметр не обязателен: если вы его зададите, то он будет интерпретирован как пароль канала. Если вы его не зададите, то для канала не будет использован пароль.

Такой стиль описания параметров - это упрощенная форма BNF.

(Backus-Naur Form, Backus Normal Form) - Нормальная форма Бэкуса-Наура, БНФ. Текстовая нотация для формального определения синтаксиса языка.

Я назвал его упрощенным, потому что он используется строго не во всех местах документации. Это просто предпочтительная форма описания синтаксиса, потому что она легко и удобочитаема.

В конце концов вы можете войти на канал, используя:

join #kvirc kvircrocks

или с тех пор как #kvirc обычно не имеет пароля:

join #kvirc

В примере выше опциональный параметр [password] пропущен.

Фактически он не является пропущенным: KVIrc интерпретирует его как пустую строку которая сигнализирует "не отправлять пароль серверу". Пустые строки эквивалентны пропущенным параметрам.

[править] Параметры, пробелы и кавычки

Из примеров выше понятно что параметры KVS команд разделяются пробелами. Однако из вышесказанного пока не очевидно что если параметры разделены множеством пробелов, то KVirc все равно будет воспринимать их как единственный пробел (как HTML парсеры или интерпретаторы команды unix-шелла). Это поведение оправдано для IRC клиента т.к. пробелы не несут обычно никакой информации в IRC и такая их интерпретация делает код программы более легким :D.

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

    echo Этот     текст     будет     иметь     упрощенные     пробелы
    echo Но     "этот       не     будет"

Первый пример выведет на экран строку с удалёнными множественными пробелами, второй же оставит пробелы внутри кавычек как есть. Кавычки также полезны для того чтобы передать в функцию или команду параметр, содержащий пробелы. Строка, заключенная в кавычки, не будет разделена на параметры.

 echo Параметр1 Параметр2 "Параметр  3 ( с пробелами )" Параметр4

Выполнив пример выше, вы сможете увидеть что пробелы будут сохранены, но кавычки будут удалены из сообщения при выводе. Это является нормальным поведением в KVS и будет рассмотрено подробнее в следующем разделе.

[править] Символ экранирования

Возможно вы уже обратили внимание на то, что некоторые символы интерпретируются в KVirc особым образом. Например, двойные кавычки используются для определения границ строк и могут быть пропущены парсером. Другой пример специального символа - это символ ';': он имеет специальное значение завершения команды. Если вы хотите чтобы ваш печатаемый текст содержал двойные кавычки, вы должны экранировать их. Как и в большинстве языков программирования, символом экранирования является обратный слеш ('\').

echo Так вы можете печатать смайлы! \;)

В примере выше ';' будет интерпретировано как часть строки и будет выведено на экран.

echo "And he said \"Hello world!\""

Пример выше сохранит экранированные кавычки при печати. Также может быть экранирован перевод строки:

    echo This text will be \
        printed on a single line!

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

This text will be printed on a single line

Другой пример:

    echo "The new kvirc       \
                IS OUT!"
    echo Check it out at http://www.kvi\
                rc.net!

Будет напечатано:

The new kvirc       IS OUT!
Check it out at http://www.kvirc.net!

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

[править] Флаги команд

Многие команды имеют различные флаги. Флаги изменяют поведение команды. Многие флаги могут принимать параметры, которые могут быть опциональными. Параметры должны быть присвоены флагу с помощью символа '='

echo -i=2 Этот текст использует специальную цветовую схему
echo --icon=2 Этот текст использует специальную цветовую схему

Флаг -i или --icon изменяет атрибуты текста и его иконку. Флаги должны следовать сразу за ключевым словом команды.

echo Это -i = 2 не будет работать...

Если вы хотите начать первый параметр команды с символа '-', вы должны его экранировать

echo \--- Этот текст будет иметь 3 знака минуса слева

Или использовать кавычки:

echo "--- Этот текст будет иметь 3 знака минуса слева"

[править] Блоки команд

Команды могут быть "сгруппированы" в блоки, используя фигурные скобки в стиле C++.

Например:

{ echo Первая команда; echo Вторая команда; } echo Третья команда

Пример с несколькими линиями:

    {
        echo Первая команда
        echo Вторая команда
    }
    echo Третья команда

В данном примере блоки команд не вносят никакой функциональности, кроме того что делают код более удобочитаемым, но блоки команд будут иметь огромное значение позднее (смотри if, while...).

[править] Комментарии

KVirc поддерживает комментарии в блоках команд. Комментарий начинается с символа # и заканчивается переводом строки. Вы можете начать комментарий где вам угодно.

# Это комментарий, он занимает всю строку
echo After the comment!; # Этот комментарий занимает конец строки

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

Так же, для коментирования можно использовать двойной слэш // или коментировать целые фрагменты кода символами /* и */ (обязательно в паре)

/*
echo все 
echo эти
echo строки 
echo закоментированы
*/
echo эта команда выполнится как и положено
//echo а это снова коментарий

[править] Отступы

Вам следует использовать пробелы или символы табуляции для стилизации вашего кода. Слово следует написано жирным потому что вам действительно следует это делать! Отступы помогают как автору, так и читателю скрипта понять написанное. Правильная расстановка отступов это первый шаг на вашем пути к славе великого программиста :)

Помните, что параметры должны быть отделены от команды пробелами, а не символами табуляции.

Например:

{
<tab>echo Indented command
<tab>{
<tab><tab># Comment
<tab><tab>echo Really Really long indented \
<tab><tab><tab>command
<tab>}
}

Символы табуляции предпочтительней чем пробелы для отступов т.к. пользователь может настроить ширину табуляции по его вкусу. Я предпочитаю, например, ширину табуляции в 4 символа в то время как во многих редакторах по умолчанию стоят 8 символов.

Личные инструменты
Инструменты
Наши кнопки
Размести кнопку KVirc у себя на сайте:
www.kvirc.ru - кроссплатформенный IRC клиент с богатым графическим интерфейсом и внутренним языком скриптинга
Друзья и спонсоры
  • Fireforge.net
Linux coutner