English
Студия Артемия Лебедева представляет…
parser


Последние новостиПтичкаИз раздела FAQ
[01 ноября 2013]  Выпущена версия 3.4.3.

Классу curl добавлена новая опция: $.ipresolve(0|1|2). Кроме этого, теперь по умолчанию curl использует IPv4(1), а не IPv6(2).

При загрузке файла с помощью ^curl:load[] теперь производится разбор всех полученных от удалённого сервера cookies и помещение их в таблицу .cookies со столбцами name, value, expires, max-age, domain, path, httponly и secure.

Появилась возможность получить список всех переменных окружения сервера с помощью $env:fields.

Необязательный второй параметр статическому методу ^file:list[] теперь может быть указан в виде строки с регулярным выражением, объекта класса regex или хэша. В последнем случае фильтр задаётся в виде $.filter[строка или объект класса regex].

Статический метод ^file:list[] теперь возвращает таблицу, где кроме столбца name также присутствуют столбцы dir, size, cdate, mdate и adate. Значения для name и dir возвращаются всегда (в столбце dir значение 1 означает, что запись является каталогом, 0 — файлом). Для получения информации о размере файлов и их датах, необходимо вызывать метод с опцией $.stat(true).

У статического метода ^file:delete[] с помощью опции $.exception(false) теперь можно подавить выдачу исключения (exception) при невозможности удалить файл.

Статическим методам ^file:delete[] и ^file:move[] были добавлены опции $.keep-empty-dirs(true) с помощью которых можно запретить парсеру удалять пустые каталоги.

Конструктор ^file::load[] теперь принимает опцию $.response-charset[] с помощью которой можно принудительно указать кодировку данных удалённого сервера (некоторые сервера возвращают данные не в той кодировке, которую они сообщают в HTTP заголовке ответа).

Статический метод ^json:string[] опцию $.indent теперь принимает как в виде логического значения (true/false), так и в виде предопределённой пользователем строки.

Статический метод ^json:string[] теперь все символы в диапазоне 0x01-0x1F (кроме специальных управляющих символов \b \f \n \r \t) выводит в виде \u00XX.

Добавлен статический метод ^math:digest[md5|sha1|sha256|sha512;строка или файл; $.format[hex|base64] $.hmac[ключ]].

Классу memcached добавлен метод ^memcached.release[], закрывающий соединение с сервером.

Статический метод ^reflection:method_info[] для методов пользовательских классов теперь также возвращает информацию о допустимом типе вызов ($.call_type), максимальном количестве принимаемых параметров ($.max_params) и имя переменной в которую метод принимает произвольное количество параметров ($.extra_param).

Классу table добавлен метод ^таблица.csv-string[[nameless;] $.encloser["] $.separator[,] ] который функционально аналогичен методу ^таблица.save[].

Классу table добавлен метод ^таблица.foreach[rownum;value]{code}[[separator]] который функционально аналогичен методу ^хэш.foreach[]. В переменную, указанную в поле value, помещается ссылка ту же самую таблица, но с изменённой текущей позицией строки.

При загрузке класса с именем, которое уже существует у одного из загруженных классов, теперь по умолчанию выдаётся исключение (exception). Отключить его можно с помощью указания опции $.replace(true) у ^use[] и ^process{}

@SET_DEFAULT и @GET_DEFAULT теперь работают и со статическими классами.

Вещественные числа теперь по умолчанию выводятся с большей точностью (16 знаков против 5).

Восстановлена работоспособность приема почты парсером.

Оптимизированы методы ^строка.int[], ^строка.double[] и ^строка.bool[].

SQL драйвер Oracle теперь устанавливает переменные окружения до загрузки клиентской библиотеки.

SQL драйверу PgSQL добавлена новая опция standard_conforming_strings=1, с помощью которой можно отключить эскейпинг символа '\' для соответствия SQL стандартам.

Библиотека разбора JSON заменена на вариант с GPL лицензией.

Версия скомпонована с последними версиями библиотек GC (7.2d), PCRE (8.33), libxml2 (2.9.1) и libxslt (1.1.28).

Переработан процесс сборки под *nix. Теперь нужно использовать buildall вместо buildall-with/without-xml.

При сборке под windows библиотеки , libxml2 и libxslt теперь линкуются статически. Это означает, что для запуска нужен только exe файл и драйвера для SQL серверов.

Сделано некоторое количество внутренних улучшений.

Исправлен ряд ошибок:

Исправлена ошибка, приводящая к core при задании только одного параметра у ^таблица.locate[], если он не был выражением.

Исправлена ошибка, из-за которой некорректно происходило заполнение таблицы $.cookies[] при ^file::load[http://...], что в свою очередь могло приводить к core, например, при попытке сохранить эту таблицу.

Исправлена ошибка, из-за которой не вызывались сеттеры значений у автоматически создаваемых переменных в методах foreach и match.

Исправлена ошибка, возникающая при указании в качестве параметра у ^table::load[] директории.

Исправлена ошибка, из-за которой выполнение ^date::create(0) приводило к исключению.

Исправлено задание $.content-type при выдаче файлов без имени.

Исправлена ошибка, из-за которой методу ^изображение.font[] невозможно было передать ширину пробела из переменной.

Исправлена ошибка, иногда возникающая при работе с junction.



[29 июня 2012]  Выпущена версия 3.4.2:

Выложенная ранее RC версия объявлена релизом.

Также обновлены все SQL драйвера (версия API осталась прежней, т.е. старые драйвера будут продолжать работать), документация, библиотеки xml (для win32 версии) и архив с конфигурационным файлом.

Полный лог изменений доступен в CVS.



Что такое Parser?
Parser — это технология создания сайтов с помощью простого языка. Он немного сложнее HTML, но не требует особенного умения программировать. Parser начал создаваться в Студии Лебедева в 1997 году. Сегодня подавляющее большинство сайтов, создаваемых Студией Лебедева, делаются с его помощью.

А зачем он вообще?
Язык специально спроектирован и оптимизирован для того, чтобы было удобно создавать хорошие сайты. Работа с формами, cookies, табличными файлами, базами данных и XML — часть языка, а модульность языка позволяет легко наращивать функциональность.

Если есть PHP, то для чего Parser?
PHP — это язык программирования, требующий соответствующей подготовки. На Parser могут работать далеко не профессиональные программисты. Parser именно тем и хорош, что позволяет простым смертным создавать и поддерживать сложные динамические сайты без больших затрат времени.

Я программировал на других языках, можно ли, в двух словах, что же такого удобного в Parser?
Parser в известном смысле — макроязык, в нём нет оператора print; весь текст, набранный в исходном файле, суть большой оператор print. Конструкции Parser являются погруженными в текст.
Получается, что вы не пишете программу, которая выводит текст — наоборот, в имеющийся текст вы добавляете логику, ^if(условие){действие}, и организацию, блоки(методы), на которые вы разбиваете HTML-код:

@header[]
...
@footer[]
...
@navigation[]
...
@body[]
...

Я в браузере вижу код на Parser, он не обработался, в чем может быть причина (использую веб-сервер Apache)?
Парсер все-таки не назначен обработчиком ваших документов.
Для проверки функционирования парсера наберите в адресной строке броузера:
http://ваш_сайт/cgi-bin/parser3.cgi (или .exe, для версии под Win32)
Вы должны увидеть примерно следующее:

Parser/3.x.x
Если вы это увидели, парсер скопирован куда следует, права на него установлены правильные.

Если парсер скопирован правильно и вы не забыли прописать в .htaccess инструкции, указанные в документации, возможно вы забыли разрешить апачу обработку .htaccess в файле httpd.conf с помощью инструкции AllowOverride.
Чтобы проверить, обрабатывается ли у вас .htaccess — впишите в него какую-нибудь заведомо неверную инструкцию, например «mytest», в самое начало. Если при релоаде страницы вы не увидите 500 ошибку (она обязательно появится если все настроено верно) — значит данный файл у вас не обрабатывается. Измените значение AllowOverride или обратитесь к вашему администратору.



Parser 3 — простой и удобный объектно-ориентированный язык, позволяющий быстро создавать хорошие сайты.

  • Теперь на 30% удобнее!
  • Новое ядро (переработанное и, разумеется, улучшенное)
  • Новый улучшенный синтаксис
  • Поддержка XML, XSL, XPath и DOM
  • Доступен в документированных исходных текстах
  • Расширенная поддержка баз данных
  • Поддержка объектно-ориентирующихся программистов
  • Подробная документация по языку на русском языке (160 страниц!)
  • Поддержка UTF-8