- У метода @GET[] появился параметр, в котором указывается, в каком контексте происходит обращение к объекту. Т.е. теперь появилась возможность сделать так, чтобы объект пользовательского класса возвращал разные типы данных в разных контекстах вызова. Например, в выражении ^if(def $oUserObject){...} он может возвращать bool, в ^table::create[$oUserObject] -- table, ^hash::create[$oUserObject] -- хеш и т.д.
- Парсер теперь делает капитализацию http заголовков при выдаче их в браузер и при загрузке файла по http.
- У ^file.save и ^строка.save появились дополнительные необязательные хеш-параметры, в которых можно указать $.charset[кодировку], в которой будут сохранены текстовые (не binary) данные.
- Исправлена ошибка, из-за которой иногда неверно кодировались выдаваемые cookies.
- У regex-объекта теперь можно узнать исходную строку с шаблоном (.pattern) и исходные опции (.options).
- У класса reflection появился новый метод fields, с помощью которого можно получить хеш со статическими полями класса или с динамическими полями объекта.
- Символ '\' теперь интерпретируется как символ окончания переменной. Т.е. $var\s теперь трактуется как "содержимое переменной $var за которым следует обратный слеш и символ s", а не как "содержимое переменной с именем 'var\s'".
- У метода ^таблица.append теперь можно использовать не только фигурные, но и квадратные скобки.
- Парсер собран с последними библиотеками xml (libxml 2.7.4 и libxslt 1.1.25) + исправлена ошибка, из-за которой в некоторых случаях у win32 версии были проблемы при работе с xml/xsl (.../etc/catalog ... read failed ...). Новые библиотеки в архиве. Можно попробовать использовать их с версией 3.3.0 :)
- При $request:charset[koi8-r] таблицы теперь сортируются правильно.
- Исправлено несколько багов, которые были в beta2.
Уже два часа испытываю сделать пойск в хеше на новом парсере. На стором роботало. На новом - нет. Всю связано с
Каждый метод должен будет или возвращать результат через $result во всех вариантах своего выполнения или не использовать $result вовсе
Я добавил $result перед вызовом метода find как сказал Sumo . Добавил его тоже в начяле метода как посоветовал moko
Подскажите пожауйста дорогие мастеры что мне ещё делать... Это исходник:
$tree[$.[/fullpath][/_admin/]$.index[$.[/fullpath][/_admin/index/]$.content[$.[/fullpath][/_admin/index/content/]]$.test[$.[/fullpath][/_admin/index/test/]]]$.help[$.[/fullpath][/_admin/help/]]]$found[^find[/_admin/index/content/;$tree]]<h2>$found.[/fullpath]</h2><p>$sLog</p>^XMLTree.foreach[key;value]{^if($key ne "/fullpath"){^log[$level пойск в $key]^if($value.[/fullpath] eq $fullpath){$result[$.key[$key]^value.foreach[this_key;this_value]{^if(^this_key.match[^^/[.]*]){$.[$this_key][$this_value]}}]^log[$level нейдёться в $key, определаем result]^break[]}{^log[$level пойск глубее]$result[^find[$fullpath;$value;${level}.]]^log[$level определаем result]}}}^log[$level конец пойска]@log[string]$sLog[${sLog}$string<br/>]
Вот это возвращает парсер:
Not found
начинаем пойск
пойск в index
пойск глубее
. начинаем пойск
. пойск в content
. нейдёться в content, определаем result
. конец пойска ***тепер хочю сделать мега супер break, но не знаю как***
определаем result
пойск в help
пойск глубее
. начинаем пойск
. конец пойска
определаем result
конец пойска
- ещё одна потенциальная проблема -- не объявленные локально key и value. из-за этого, внутри рекурсии происходит перезапись этих глобальных переменных. при добавлении чего-либо после рекурсивного вызова это может аукнуться. (лучше ВСЕГДА объявлять их все или использовать 'locals' в объявлении)
- что вы хотели сказать этим: ^this_key.match[^^/[.]*] ?
Да - исправлю метод чтоб key и value были локолны. Что касаеться ^this_key.match[^^/[.]*] у меня параметры страниц начинаеться от / и я хотел проверить что ключь есть нормальный ключ или только параметр начинающийся от /
...но можеть быть что я сделай так как сказал мне моко и буду хранить все параметры в оттдельных ключах н.п. "options"
...но можеть быть что я сделай так как сказал мне моко и буду хранить все параметры в оттдельных ключах н.п. "options"
options тоже надо фильтровать. Можно оставить и с префиксом для ключей, содержащих путь (например _), на суть мало влияет, главное убрать перебор, который в случае большого дерева уж очень неэффективен.
возможно поможет сборка драйвера. просто это шаманство обсуждалось в форуме много раз (я понимаю, что вам возможно сложно это найти. но у меня сейчас нету времени искать и объяснять это, возможно позже, или ещё кто-нить объяснит).
не спешите ставить эту бету, т.к. в ней уже обнаружена пара ошибок.