parser

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

 

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

Ответ

Misha v.3 21.09.2015 10:52 / 21.09.2015 11:12

@main[]
$h[^hash::create[]]
^parseData[$h;name.a.b.c;value1]
^parseData[$h;name.a.b.d;value2]
^parseData[$h;name0;value]
^parseData[$h;;value]

^dstop[$h]



@parseData[data;field;value][result;t;h;i]
$t[^field.split[.][lv]]
^switch($t){
	^case(0){
		$data.[$VOID][$value]
	}
	^case(1){
		$data.[$t.piece][$value]
	}
	^case[DEFAULT]{
		$h[^self.create[$data;$t.piece]]
		^t.offset[set](1)
		^for[i](1;$t-2){
			$h[^self.create[$h;$t.piece]]
			^t.offset[cur](1)
		}
		$h.[$t.piece][$value]
	}
}


@create[h;k][result]
^if(!($h.$k is "hash")){$h.[$k][^hash::create[]]}
$h.$k
P.S. на красоту и лаконичность не претендую