parser

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

 

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

Хэши рулят!

mashi 20.05.2006 17:13 / 20.05.2006 17:30

# вот наша табличка с какими то полями:
$tNameList[^table::create{name
Бабушкин сироп
Багомет
Багоприл
Баготирокс
Багульник болотный
Багульника болотного побеги
Бадана корневище
Бадяга
Бадяга (порошок)
Бадяга комп.
Базиликум
Базирон АС
БазоВиталь Форте
Байгон липкая лента от мух
Байгон Мастер
Байгон спираль
Байгон — Гениус
Байгон — пластины против комаров
Байоджевити
Байцаотан
Байцзы (Байцзыянсиньвань)
Бак Лонг
Баклосан
Баклофен
Бакопа Монниери
Баксин
Бактериобаланс
Бактериофаг дизентерийный поливалентный
Бактериофаг дизентерийный поливалентный
Бактериофаг дизентерийный поливалентный жидкий
Бактериофаг клебсиелл пневмонии очищенный жидкий
Бактериофаг клебсиелл поливалентный очищенный
Бактериофаг коли жидкий
Бактериофаг колипротейный жидкий
Бактериофаг протейный жидкий
Бактериофаг псевдомонас аэругиноза (синегнойный) жидкий
Бактериофаг псевдомонас аэругиноза жидкий
Бактериофаг сальмонеллезный групп ABCDE в свечах
Бактериофаг сальмонеллезный групп ABCDE жидкий
Бактериофаг стафилококковый в свечах
Бактериофаг стафилококковый жидкий
Бактериофаг стрептококковый жидкий
Бактериофаги диагностические холерные
Бактериофаги стафилококковые типовые диагностические сухие
Бактериофаги стафилококковые типовые диагностические сухие — Англия (международный набор)
Бактериофаги холерные диагностические жидкие
Бактериофаги холерные диагностические сухие
Бактериофаги холерные (ТЭПВ-1, 2, 3, 4, 5, 6 и 7) диагностические жидкие
Бактериофаги холерные (ХДФ-3, 4, 5) диагностические жидкие}]

# делаем рубрикатор по первым буквам
$hRubric[^tNameList.hash{^key(1)[$tNameList.name]}[$.distinct[tables]]]

# для каждой буквы делаем рубрикатор по 4-м буквам
^hRubric.foreach[letter;rubricTable]{
	$hRubric.[$letter][^rubricTable.hash{^key(4)[$rubricTable.name]}[$.distinct[tables]]]
}

@key[letterAmount;name]
$result[^name.mid(0;$letterAmount)]
$result[^result.trim[]]
$result[^result.upper[]]
В результате получаем двухуровневый хеш, у которого, правда, могут быть русскоязычные ключи.

Например: Из рубрики "Б" необходимо получить подрубрику "БАКТ"
^hRubric.Б.БАКТ.menu{
	$hRubric.Б.БАКТ.name
}[<br>]