parser

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

 

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

Сериализация данных из формы, на подобии php

max_rip 01.05.2014 14:18

В продолжении темы http://www.parser.ru/forum/?id=76414
Можно ли как-то улучшить метод parseData, так чтобы не надо было в ручную прописывать уровни глубины вложенности, мне пока и двух хватает, но хочется идеала )
@CLASS
serialForm

@getData[][names]
	$self.data[^hash::create[]]
	^form:fields.foreach[field;value]{ 
		^self.parseData[$field;$value]
	}
	$result[$self.data]
	
@parseData[field;value][valueName]
	$mtcData[^field.match[^(.+?)\^[][g]]
	^if($mtcData){
		$fieldName[$mtcData.1]
		$mtc[^field.match[\^[(.+?)\^]][g]]
		^mtc.menu{
			^switch(^mtc.line[]){
				^case(1){
					^if(!($data.$fieldName is "hash")){
						$self.data.$fieldName[^hash::create[]]
					}
					$level1[$mtc.1]
					^if(^mtc.count[] == 1){$self.data.$fieldName.$level1[$value]}
				}
				^case(2){
					$level2[$mtc.1]
					^if(!($self.data.$fieldName.$level1 is "hash")){
						$self.data.$fieldName.$level1[^hash::create[]]
					}
					^if(^mtc.count[] == 2){$self.data.$fieldName.$level1.$level2[$value]}
				}
			}
		}
	}