parser

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

 

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

Пример работы с ini-файлами

AleXp 07.11.2005 00:03 / 07.11.2005 01:46

Файлы "без секционные".
###################################################################################################
# $Id: ini.p,v 1.0 2005/11/06 23:40:00 asharky@opensea.ru Exp $
###################################################################################################
@CLASS
iniFile





@create[name;path][_string;_now]
###################################################################################################
$self.pathFile[^path.trim[end;/]/${name}.ini]
^if(-f "$pathFile"){
	$result[$self.CLASS]
}{
	$_now[^date::now[]]
	$_string[# ${pathFile}. Created ^_now.sql-string[]^#0A]
	^try{
		^_string.save[$pathFile]
		$result[$self.CLASS]
	}{
		$exception.handled(1)
		$result[]
	}
}
#end @create[]





@get[param][_tab]
###################################################################################################
$_tab[^_search_string[^_get_string[];$param]]
^if(^_tab.count[] != 0){$result[$_tab.4]}{$result[]}
#end @get[]





@add[param;value][_str;_tab]
###################################################################################################
^file:lock[ini.lock]{
	$_str[^_get_string[]]
	$_tab[^_search_string[$_str;$param]]
	^if(^_tab.count[] != 0){
		$_str[^_str.match[${_tab.1}${_tab.2}${_tab.3}${_tab.4}${_tab.5}][]{${_tab.1}${_tab.2}${_tab.3}${value}${_tab.5}}]
	}{
		$_str[${_str}${param} = ${value}^#0A]
	}
	^_put_string[$_str]
}
$result[]
#end @add[]




@del[param][_str;_tab]
###################################################################################################
^file:lock[ini.lock]{
	$_str[^_get_string[]]
	$_tab[^_search_string[$_str;$param]]
	^if(^_tab.count[] != 0){
		$_str[^_str.match[${_tab.1}${_tab.2}${_tab.3}${_tab.4}${_tab.5}][]{}]
		^_put_string[$_str]
	}
}
$result[]
#end @del[]




@_get_string[][_file;_str]
###################################################################################################
$_file[^file::load[text;$pathFile]]
$_str[$_file.text]
$result[^_str.match[\t][g]{^#01}]
#end @_get_string[]





@_put_string[str]
###################################################################################################
$str[^str.match[\x01][g]{^#09}]
^str.save[$pathFile]
$result[]
#end @_put_string[]





@_search_string[str;param]
###################################################################################################
$result[^str.match[^^([ \x01]*)($param)([ \x01]*=[ \x01]*)([\w]*)(.*\n)][m]]
#end @_search_string[]