Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Misha v.3 05.03.2004 21:59
Пример 1:@my_method[] код методаindex.html:
^if($my_method is "junction"){ ^my_method[] }Пример 2 (более сложный, но его я активно использую):
@main[] # в этом хеше мы будем хранить ссылки на junctions. $processes[^hash::create[]] ... # затем в него каким-то образом попадают записи о внешних файлах, которые нам придется выполнять ... # ну а когда надо выполнять зовем свой метод # при этом файл с диска будет загружен только один раз, и # отпроцессен один раз, при повторном вызове будет обращение # к уже созданному методу (junction) ^for[i](1;100){ ^my_process[5] } @my_process[id] ^if(!$processes.[$id].process_body_loaded){ ^rem{ *** еще не грузили данный код (соответственно не процессили) *** } $pname[process_${id}_main] ^try{ $pf[^file::load[text;каталог/$processes.[$id].process]] $process_body[^taint[as-is][^trim[$pf.text]]] ^if(^process_body.pos[@main^[^]] >= 0){ ^rem{ *** если в нем есть буковки @main[] - меняем их *** } $process_body[^process_body.match[\@main\^[\^]][g]{@${pname}^[^]}] }{ ^rem{ *** а если их нету, и в файле что-то есть - приделываем их в самое начало *** } ^if(def $process_body){ $process_body[@${pname}^[^] ^#0A$process_body] } } }{ ^rem{ *** какой-то облом, ну и фиг с ним. бум считать, что кода нету *** } $exception.handled(1) $process_body[] } ^rem{ *** вот теперь можно процессить код и создавать метод *** } ^process[$caller.self]{$process_body} ^rem{ *** запоминаем, что мы его уже отпроцессили, и нам не надо его больше будет пытаться грузить и компилить *** } ^processes.[$id].add[ $.process_body_loaded(1) $.main[$$pname] ] } ^if($processes.[$id].main is "junction"){ ^rem{ *** если метод есть - выполняем его *** } $result[^trim[^processes.[$id].main[]]] }{ $result[] }