parser

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

 

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

@buildQuery

Janek 14.04.2008 16:32

###########################################################################
@query_to_hash[sQuery][tQuery;oneParam]
^if(!def $sQuery){$sQuery[$request:query]}
$sQuery[^sQuery.match[&amp^;][g]{&}]
$tQuery[^sQuery.split[&]]
$result[^hash::create[]]
^tQuery.menu{
	$oneParam[^tQuery.piece.split[=;lh]]
	^result.add[
		$.[$oneParam.0][$oneParam.1]
	]
}

###########################################################################
@hash_to_query[hQuery][sQuery]
$sQuery[^hQuery.foreach[key;value]{$key=$value&amp^;}]
$result[^sQuery.trim[end;&amp^;]]


###########################################################################
@buildQuery[sFilter;AppendQuery;bFilterEliminator][hOldQuery;hAppendQuery;tFilter;hNewQuery]
$hOldQuery[^query_to_hash[]]

^if($AppendQuery is "string"){
	$hAppendQuery[^query_to_hash[$AppendQuery]]
}

^if($AppendQuery is "hash"){
	$hAppendQuery[$AppendQuery]
}

$hNewQuery[^hash::create[]]


^if(def $sFilter){
	$tFilter[^sFilter.split[,]]
	^hOldQuery.foreach[key;value]{
		^if(^tFilter.locate[piece;$key] && !$bFilterEliminator){
			^hNewQuery.add[$.[$key][$value]]
		}
		^if(!^tFilter.locate[piece;$key] && $bFilterEliminator){
			^hNewQuery.add[$.[$key][$value]]
		}
		
	}
}{
	$hNewQuery[$hOldQuery]
}


^if($hAppendQuery is "hash"){^hNewQuery.add[$hAppendQuery]}
$result[^hash_to_query[$hNewQuery]]