Новости | 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]] } } } } }