| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Юзер 28.09.2005 08:01
У меня есть поделка одна, в качестве результата формирует двухуровневый хеш.@_parse_config[cfg_file][data;block_name;key;value;commented]
$block_name(0)
$result[^hash::create[]]
#> Ïðèíöèïèàëüíûé âîïðîñ - ñ÷èòàòü ôàéë êàê ñòðîêó èëè ñðàçó êàê òàáëèöó?
#> â ñëó÷àå åñëè â ôàéëå åñòü ñèìâîëû òàáóëÿöèè, òî îíè "îòðåæóò" ÷àñòè ñòðîê.
^if(^cfg_file.pos[^#0A]<=0){
$data[^table::load[nameless;$cfg_file]]
}{
$data[^table::create[nameless]{$cfg_file}]
}
^data.menu{
$string[^data.0.trim[]]
^switch[^string.left(1)]{
^case[#;/;^;]{$commented(1)}
^case[DEFAULT]{$commented(0)}
}
^if($commented == 0 && ^string.length[]>2){
^if(^string.left(1) eq '[' && ^string.right(1) eq ']'){
$block_name[^string.mid(1;^string.length[]-2)]
$block_name[^block_name.trim[]]
}{
^if(^string.pos[=] > 0){
$key[^string.left(^string.pos[=])]
$key[^key.trim[]]
$value[^string.right(^string.length[] - ^string.pos[=] -1)]
$value[^value.trim[both; '"^;]]
^if(^value.lower[] eq 'true'){$value(1)}
^if(^value.lower[] eq 'false'){$value(0)}
^if($block_name is string && ^block_name.lower[] eq 'default'){
$block_name(^block_name.double(0))
}
^if($block_name is double){
$result.$key[$value]
}{
^if($result.$block_name is void){
$result.$block_name[^hash::create[]]
}
^result.$block_name.add[$.$key[$value]]
}
}
}
}
}