parser

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

 

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

Version 1.6

AleXp 17.10.2005 14:54 / 17.10.2005 15:04

Ошибки исправил. В @debugShowHash[] у меня вообще были "забыты" классы date, image, file и table которые могут быть ключами hash'а. Включил и их.

Вывод оставил в прежнем виде. Так все-таки нагляднее, имхо, и не приходится задумываться какой класс мы выводим.
###################################################################################################
# $Id: visualization.p,v 1.6 2005/10/17 15:52:40 asharky@opensea.ru Exp $
###################################################################################################
#
# @debugShowObject[]	Визуализация объектов
# @debugShowVoid[]	Визуализация пустых объектов
# @debugShowString[]	Визуализация объекта класса string
# @debugShowTable[]	Визуализация объекта класса table
# @debugShowImage[]	Визуализация объекта класса image
# @debugShowDate[]	Визуализация объекта класса date
# @debugShowFile[]	Визуализация объекта класса file
# @debugShowDouble[]	Визуализация объекта класса int или double
# @debugShowBool[]	Визуализация объекта класса bool
# @debugShowHash[]	Визуализация объекта класса hash
#
###################################################################################################
# Если есть необходимость и желание сделать данную библиотеку операторов классом, то:
#
# 1. Раскоментируйте ниже расположенные две строки
# @CLASS
# visualization
# 2. Включите в Ваш класс MAIN оператор:
# @debugShowObject[object]
# ^visualization:debugShowObject[$object]
# #end @debugShowObject[]
###################################################################################################




@debugShowObject[object]
###################################################################################################
# Визуализация объектов
#
#    string
#    debugShowObject[
#	undefined object
#    ]
#
^if(!def $object){
	^if($object is "bool"){
		^debugShowBool[$object]
	}{
		^debugShowVoid[$object]
	}
}{
	^if($object is date){^debugShowDate[$object]}
	^if($object is file){^debugShowFile[$object]}
	^if($object is image){^debugShowImage[$object]}
	^if($object is bool){^debugShowBool[$object]}
	^if($object is table){^debugShowTable[$object]}
	^if($object is string){^debugShowString[$object]}
	^if($object is int || $object is double){^debugShowDouble[$object]}
	^if($object is hash){^debugShowHash[$object]}

}
#end @debugShowObject[]




@debugShowString[text]
###################################################################################################
# Визуализация объекта класса string
#
#    string
#    debugShowString[
#	string text
#    ]
#
$result[<strong>$text</strong> (string)<br>]
#end @debugShowString[]




@debugShowDouble[d]
###################################################################################################
# Визуализация объекта класса int или double
#
#    string
#    debugShowDouble[
#	int/double d
#    ]
#
$result[<strong>$d</strong> (int/double)<br>]
#end @debugShowDouble[]




@debugShowBool[b]
###################################################################################################
# Визуализация объекта класса bool
#
#    string
#    debugShowBool[
#	bool b
#    ]
#
$result[<strong>^if($b){true}{false}</strong> (bool)<br>]
#end @debugShowBool[]




@debugShowVoid[v]
###################################################################################################
# Визуализация пустых объектов
#
#    string
#    debugShowVoid[
#	void v
#    ]
#
$result[<strong>Значение не присвоено</strong> (void)<br>]
#end @debugShowVoid[]




@debugShowFile[f][_f]
###################################################################################################
# Визуализация объекта класса file
#
#    string
#    debugShowFile[
#	file f
#    ]
#
^try{
	$_f[^file::stat[$f.name]]
	$result[<strong>^file:fullpath[$f.name]</strong> (file)<br>
	Размер: $_f.size байт.<br>
	Создан ${_f.cdate.day}.${_f.cdate.month}.${_f.cdate.year} в ${_f.cdate.hour}ч.${_f.cdate.minute}мин.<br>
	Изменен: ${_f.mdate.day}.${_f.mdate.month}.${_f.mdate.year} в ${_f.mdate.hour}ч.${_f.mdate.minute}мин.<br>
	Последний раз обращение к файлу производилось ${_f.adate.day}.${_f.adate.month}.${_f.adate.year} в ${_f.adate.hour}ч.${_f.adate.minute}мин.<br>
	MIME-тип файла: $_f.content-type<br>
	^if(${_f.content-type} eq "text/plain" || ${_f.content-type} eq "text/html"){
	Первые 100 символов файла:<br>
	<strong>^f.text.left(100)...>>></strong><br>
	Последние 100 символов файла:<br>
	<strong><<<...^f.text.right(100)</strong><br>
	}
	]
}{
	$exception.handled(1)
	$result[<font color="red"><strong>^file:fullpath[$f.name]</strong> (file) не найден!</font><br>]
}
#end @debugShowFile[]




@debugShowDate[d]
###################################################################################################
# Визуализация объекта класса date
#
#    string
#    debugShowDate[
#	date d
#    ]
#
$result[<strong>${d.day}.${d.month}.${d.year}, ${d.hour}ч.${d.minute}мин.${d.second}сек. $d.yearday день года</strong> (date)<br>]
#end @debugShowDate[]




@debugShowImage[i]
###################################################################################################
# Визуализация объектов класса image
#
#    string
#    debugShowImage[
#	image i
#    ]
#

$result[^if(def $i.src){<strong>^i.html[]</strong>}{<strong>Графический объект созданный Parser3</strong>} (image)<br>
Высота изображения^: $i.height<br>
Ширина изображения^: $i.width<br>
^if(def $i.exif){^debugShowHash[$i.exif]}{EXIF информация в файле отсутствует!<br>}]
#end @debugShowImage[]




@debugShowTable[t][_tcol;_t;_path]
###################################################################################################
# Визуализация объектов класса table
#
#    string
#    debugShowTable[
#	table t
#    ]
#
^if(^t.columns[] != ^t.flip[]){
	$_path[$TEMP_DIR/^math:uid64[]]
	^t.save[$_path]
	$_t[^table::load[$_path]]
	^file:delete[$_path]
	Объект является nameless таблицей!<br>
	^debugShowTable[$_t]
}{
	$_tcol[^t.columns[]]
	$result[<table cellSpacing="1" cellPadding="1" border="1">
	<tr align="center">
	^_tcol.menu{
		<td><strong>$_tcol.column</strong></td>
	}
	</tr>

	^t.menu{
	<tr align="center">
		^_tcol.menu{
		<td>$t.[$_tcol.column]</td>
		}
	</tr>
	}
	</table>]
}
#end @debugShowTable[]




@debugShowHash[h][k;v;_s]
###################################################################################################
# Визуализация объекта класса hash
#
#    string
#    debugShowHash[
#	hash h
#    ]
#
<br>
$_s[$caller._s&nbsp^;&nbsp^;&nbsp^;&nbsp^;&nbsp^;&nbsp^;&nbsp^;&nbsp^;&nbsp^;&nbsp^;&nbsp^;&nbsp^; ]
^h.foreach[k;v]{
	^if(!def $v){
		^if($v is "bool"){
			$_s^$.$k = ^debugShowBool[$v]
		}{
			$_s^$.$k = ^debugShowVoid[$v]
		}
	}{
		^if($v is bool){$_s^$.$k = ^debugShowBool[$v]}
		^if($v is string){$_s^$.$k = ^debugShowString[$v]}
		^if($v is date){$_s^$.$k = ^debugShowDate[$v]}
		^if($v is image){$_s^$.$k = ^debugShowImage[$v]}
		^if($v is file){$_s^$.$k = ^debugShowFile[$v]}
		^if($v is table){$_s^$.$k = ^debugShowTable[$v]}
		^if($v is int || $v is double){$_s^$.$k = ^debugShowDouble($v)}
		^if($v is hash){
			$_s^$.$k (hash) = ^debugShowHash[$v]
			$caller._s[^_s.mid(^eval(^_s.pos[ ]+1))]
		}
	}
}
#end @debugShowHash[]