parser

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

 

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

ну просто help!!!!

Lifesource 19.12.2002 18:59

Александр я тут бился с этим делом никак не выходит, вот привожу пример скажите что не так?...
@main[]
###Определяем хеш (оригинал) 
$global_hash[$.row1(10)
             $.row2[$.21(210)
                    $.22(220)]
             $.row3[$.31(310)
                    $.32[$.temp[value]
                         $.pop[3]]]]
                         
$new_hash[^add_with_change[$global_hash]]
^new_hash.row3.32.add[$.imap[4]]
^$GLOBAL_HASH=
^show_ready_hash[$global_hash]<br>
^$NEW_HASH=
^show_ready_hash[$new_hash]
<font color="red" size="10pt">И как видим всё добавилось в оригинал :( </font> 

#Метод создаёт копию оригинала причём добовляет ещё один ключ в копию  
@add_with_change[my_hash]
$result[^hash_create[$my_hash]]
^result.row2.add[$.999[poops]]



### Метод содаёт копию хеша, переданного в качестве параметра, при этом
####  копирует структуру оригинала, не ссылаясь на объекты(только хеши) содержащиеся в оригинале
##### (блин как хочется в это верить, но что то не так:( ) 
@hash_create[temp_hash][key;value]
^if($temp_hash is 'hash'){
 $result[^hash::create[$temp_hash]] ^rem{если убрать из конструктура параметр, 
                                          то потеряется ключ 31 в row3(куда девается,
                                           не могу понять...)}
    ^temp_hash.foreach[key;value]{
	  ^if($value is 'hash'){
	  	^result.add[$.$key[^hash_create[$value]]]} 	
	     }{
	     	^result.add[$.$key[$value]]
		}
	}{$result[$temp_hash]}

### Метод выводит содержимое хеша 
@show_ready_hash[this_hash][key;val]
^if($this_hash is 'hash'){
<ul>
^this_hash.foreach[key;val]{
	^if($val is 'hash'){
		<li>$key^[
		^show_ready_hash[$val]
			^]		
	}{
		<li> ^if($val is 'string'){$key^[$val^]}{$key^($val^)}
	}
}[</li>]
</ul>
}{
<br><font color="red" size="6pt">
<i><b>The parameter is not a hash! Here is its value=</b></i></font>
<font color="green" size="7pt">$this_hash</font><br>}