parser

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

 

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

В продолжение необычного $form:hashes или каждый понимает по своему.

BeaVe 17.05.2007 15:08

В общем заинтересовала меня идея Азата Разетдинова.
Но метод предложенный им мне показался не полным, т.к. у меня поля бывают:
group1.group2.param
Нужен был мне метод, который делает хеш с множественными уровнями. Разумеется я попытался его написать.

Получилось вот что:
@parseForm[][hForm;aForm;_hForm;jCheck]
$result[^hash::create[]] 

^form:fields.foreach[sFieldName;]{
#	getting form field
	$hForm[^self._parseFormField[$sFieldName]] 

	^rem{ *** creating result hash *** }
	
#	declaring variables (for recursion)
	$aForm[$hForm] 
	$_hForm[$result] 

	$jCheck{
		^if($aForm is 'hash'){
			^aForm.foreach[sName;aBody]{

				^if(!def $_hForm.[$sName]){
					$_hForm.[$sName][^hash::create[]] 
				}

				$aForm[$aBody] 
				$_hForm[$_hForm.[$sName]] 

				$jCheck
			}
		}
	}

	$jCheck
	
	^rem{ *** END creating result hash *** }
}

$result[$result]
#end @parseForm[]



@_parseFormField[strField][tMatches;sField]
$tMatches[^strField.match[^^(\w+)[\.]?][']] 

^if(def $tMatches.1){

	^if(!def $sField){
		$sField[$strField] 
	}

	$result[^hash::create[]] 
	$result.[$tMatches.1][^self._parseFormField[$tMatches.postmatch]]

}{
	$result[$form:tables.[$sField]] 
}
#end @_parseFormField[]
НО результата я не добился... Т.к. мне нужно еще и присвоить значение в хэше.
Я думал думал и не додумал.

Был бы рад услышать совет.

P.S.
Метод @_parseFormField[] выводит хэш поля с таблицей значений.
Т.е. передать ему "about.config.name", то получится:
$.about[
	$.config[
		$.name[ЗДЕСЬ ЗНАЧЕНИЕ ИЗ $form:tables.[about.config.name]]
	]
]