| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Sumo 05.05.2010 12:30 / 05.05.2010 12:32
У меня есть подобный метод в http://code.google.com/p/parser3-pf/source/browse/trunk/pf/io/pfOS.p@walk[aPath;aVarName;aCode;aSeparator][lFiles]
## Обходит дерево файлов начиная с aPath и выполняет для каждого найденного файла aCode.
## Имя файла c путем попадает в переменную aFileName.
## Файлы сортируются по именам.
## Между вызовами aCode вставляется aSeparator.
^pfAssert:isTrue(def $aVarName)[Не задано имя переменной для имени файлов.]
$aPath[^aPath.trim[right;/\]]
$lFiles[^file:list[$aPath]]
^lFiles.sort{$lFiles.name}[asc]
$result[^if($lFiles && ^aVarName.left(7) eq "caller."){$aSeparator}^lFiles.menu{^process{^$caller.caller.$aVarName^[$aPath/$lFiles.name^]}$aCode^if(-d "$aPath/$lFiles.name"){^walk[$aPath/$lFiles.name;caller.$aVarName]{$aCode}[$aSeparator]}}[$aSeparator]]
^if(^aVarName.left(7) ne "caller."){$caller.$aVarName[]}