parser

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

 

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

Сделав рекурсивный обход...

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[]}