parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

[ Хотелки ] Что бы хотелось иметь в Парсере для хешей.

andylars 05.10.2015 11:07 / 05.10.2015 13:08

Понятное дело, что мои хотелки не имеют корреляции с целями разработчиков Парсера.

Но просто, пока помню, и на правах "пусть полежит" или как тема для обсуждения о целесообразности их.

Класс hash
#
# Класс hash
#

1. Возможность сквозного автосоздания хеша 
(возможно включаемая в конфиге опция)

$hsh.a.b.c[value]

если $hsh не задан, и соответственно не заданы
вложенные хеши a.b. - то конструкцией выше
автоматически создаются хеши hsh.a.b при первом упоминании
если хеши hsh.a.b уже есть, то они:

a) не перетираются, как было бы в случае $hsh[$.a[$.b[$.c[10]]]]
b) конструкция поддается динамическим манипуляциям без process

# Причина
Это очень часто пригождается, и в итоге каждый раз превращается
в рекурсивный ад с итеративной проверкой на сущ.хеша и его пред-созданием.


2. Глубокое копирование hash как разновидность конструктора

$hash_copy[^hash::deep_copy[$hash_orig]]

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

Алгоритм работы такой, чтобы копировал только "статические" ветки/ключи,
во избежание зацикленности и неоднозначности.

# Причина
При создании приложения хочется генерить вложенные конфиги, структуры (меню, конфигурации, да много чего). 
И соответственно для их реализации хорошо подходят
хеши, но при вложенности более 1 уровня, 
манипулцяии начинают превращаться в головную боль. 
Особенно, если проводить операция со множествами для многовложенной структуры.

3. Операции вставки!

^hash_orig._insert[key;value;offset/key;after/before]

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

Определенным местом может быть ключ с опцией after/before, может быть и индекс.

4. Функции стека/очереди

^hash_orig._push/_pop   и т.п.

Вставка с вершины стека/очереди, а не в конец, как по-умолчанию.
Соответственно, и в функции foreach - добавить обратный порядок перебора,
чтобы можно было снимать значения с конца или начала.

# Причина
Реализация - событий, очередей - очень нужная штука

5. Инвертирование порядка ключей хеша.

^hash_orig._keys_inverse[]

# Причина
Очевидна.
В последнее время таблицами почти не пользуюсь...
Хеши почти во всем удобнее.
Да и таблицы есть частный случай хеша по сути: список кортежей (строк с фикс.последовательностью и кол-вом ключей)