parser

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

 

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

Ответ

Misha v.3 01.05.2014 16:07 / 01.05.2014 16:18

@main[]
$self.data[^hash::create[]]
^parseData[item^[1^]^[2^]^[3^];a]
^parseData[item^[1^]^[2^]^[4^];b]
^parseData[item^[1^]^[1^]^[2^];c]
^parseData[item^[2^];d]
^parseData[item^[3^];e]
^parseData[item^[4^]^[5^];f]
^parseData[item^[4^]^[6^];g]
^parseData[item2;h]
^parseData[item3;i]
^dstop[$self.data]



@parseData[field;value][t;h]
$t[^field.match[\^[([^^\^]]+)\^]][g']]
^if(def $t.prematch){
	$h[^create[$self.data;$t.prematch]]
	^t.menu{
		^if(^t.line[] == $t){
			$h.[$t.1][$value]
		}{
			$h[^create[$h;$t.1]]
		}
	}
}{
	$self.data.[$field][$value]
}


@create[h;k]
^if(!($h.$k is "hash")){
	$h.[$k][^hash::create[]]
}
$result[$h.$k]
P.S. если это всё в классе, то вынести в @auto[] $oRegex[^regex::create[...]] и в методе использовать его