parser

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

 

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

а если так...

_wild_ 29.08.2005 23:08 / 29.08.2005 23:10

в принципе ничего в коде не менялось, только обработка стала в два этапа
так будет и почитабельней и при добавлении обработки новых типов меньше шансов запутаться
@print_r[var;show;notip][_type]

^if($var is string){$_type[string]}{
	^if($var is file){$_type[file]}{
		^if($var is hash){$_type[hash]}{
			^if($var is hashfile){$_type[hashfile]}{
				^if($var is image){$_type[image]}{
					^if($var is table){$_type[table]}
}}}}}


^switch[$_type]{ 
	^case[string]{
		$var
	}
	^case[file]{
		^if($notip ne 1){Тип: файл}
		Имя файла: $var.name [ $var.content-type ]
		Размеры: $var.size байт 
		^if($file.stderr){Ошибка при загрузке: $file.stderr}
		^if($show ne yes){
			<span title="Для того, чтобы просмотреть файл укажите второй 
				параметр функции ^^print_r[] равным 'yes'" style="color^: 
				#ff0000^; cursor: help">[?]</span>
		}{
			<div class=system>^taint[html;$var.text]</div>
		}
	}
	^case[hash]{
		^if($notip ne 1){Тип: хэш}
		<div class=system>
		^var.foreach[key;value]{$key = ^print_r[$value;$show;1]}[<br />]</div>
	}
	^case[hashfile]{
		^if($notip ne 1)
		{Тип: хешфайл}
		^print_r[^var.hash[];$show;1]
	}
	^case[image]{
		^if($notip ne 1){Тип: изображение}
		^if($var.src){Имя файла: $var.src}
		Размеры: ${var.width}x$var.height 
		^if($show eq 1 && $var.src){
			^var.html[]
		}{
			<span title="Для просмотра изображения укажите второй параметр 
				функции ^^print_r[] равным единице! Внимание: функция не
				показывает изображения сгенерированные автоматически 
				Парсером!" style="color^: #ff0000^; cursor: help">[?]
			</span>
		}
	}
	^case[table]{
		^if($notip ne 1){Тип: таблица}
		$cols[^var.columns[]]
		<table border="1">
		<tr>^cols.menu{<th>$cols.column</th>}</tr>
		^var.menu{
			<tr>^cols.menu{
				$v[$cols.column] <td>^print_r[$var.$v]</td>
			}
			</tr>
		}
		</table>
	}
	^case[DEFAULT]{
		Неизвестный тип (возможно, объект пользовательского класса)
	}
}