parser

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

 

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

Фигней приходится заниматься :(

AleXp 23.10.2005 22:30

Из-за этих "нюансиков" с отказами от записи файла нулерой длины и прочими неоднозначнастями:
@CopyDirFiles[from;to;rewrite;recursive;delete_after_copy;mask][_tabList;_file;_result;_mask;_method]
###################################################################################################
# Копирует файлы и каталоги. Возвращает $TRUE при успешном завершении
# копирования и $FALSE - в противном случае.
#
#    bool
#    CopyDirFiles[
#	string from;
#	string to;
#	bool rewrite = $TRUE;
#	bool recursive = $FALSE;
#	bool delete_after_copy = $FALSE;
#	string mask = ""
#   ]
$_result($TRUE)
^if(def $mask){
	$_mask[^mask.match[[^^0-9A-Za-z.*?_]][g]{}]
	$_mask[^_mask.replace[^table::create{from	to
*	.*
.	\.
?	.}]]
	$_tabList[^file:list[$from;$_mask]]
}{
	$_tabList[^file:list[$from]]
}

^try{
	^_tabList.menu{
#		^visualization:object[$_tabList.name;log.htm]
		^if(-f "${from}${_tabList.name}"){
			$_file[^file::stat[${from}${_tabList.name}]]
			^if(^_file.size.int[] == 0){$_method[text]}{$_method[binary]}
			$_file[^file::load[$_method;${from}${_tabList.name}]]
			^if(!(-f "${to}${_tabList.name}" && !$rewrite)){
				^_file.save[$_method;${to}${_tabList.name}]
				^if($delete_after_copy){^file:delete[${from}${_tabList.name}]}
			}
		}{
			^if($recursive){
				^if(!^CopyDirFiles[${from}${_tabList.name}/;${to}${_tabList.name}/;$rewrite;$recursive;$delete_after_copy;$mask]){
					$_result[$FALSE]
				}
			}
		}
	}
}{
	$exception.handled(1)
#	^visualization:object[$_tabList;log.htm]
	$_result($FALSE)
}
$result[$_result]
#end @CopyDirFiles[]
Абыдна, да?