Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
gik 16.05.2009 15:59
@USE FireBug.p ########################################################################### @main[] ^FireBug:group[test group;[ $.sColor[#880000] $.sCollapsed[true] ]] ^FireBug:log[proc started;$status:rusage] ^FireBug:log[memory at start;$status:memory] $table[^table::create{id name 1 test1 2 test2 }] ^FireBug:table[test dump;$table] ^FireBug:info[date now;^date::now[];[ $.sFile[test.p] $.sLine[10] ]] ^FireBug:log[proc ended;$status:rusage] ^FireBug:log[memory at end;$status:memory] ^FireBug:group_end[] ^FireBug:group[test group] ^FireBug:warn[warning message] ^FireBug:error[error, html is empty )] ^try{ ^throw[test exception;] }{ $exception.handled(1) ^FireBug:exception[$exception] } ^FireBug:group_end[] ########################################################################### @postprocess[sBody] $result[$sBody] ^FireBug:print[] ###########################################################################
########################################################################### # $Id: FireBug.p,v 0.1 2009-05-15 08:08:45 gik Exp $ # JSON based on misha JSHttpRequest Class ########################################################################### @CLASS FireBug ########################################################################### @auto[] $tLog[^table::create{str}] $sProtocol[http://meta.wildfirehq.org/Protocol/JsonStream/0.2] $sPlugin[http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3] $sStructure[http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1] $sType[] #end @auto[] ########################################################################### # start group # # hParam - hash # $.sColor[string] # $.sCollapsed[true/false] # @group[sGroupLabel;hParam] ^_append[GROUP_START;$sGroupLabel;;$hParam] #end @group[] ########################################################################### # close group # @group_end[] ^_append[GROUP_END] #end @group_end[] ########################################################################### # log message # # sLabel - label # uVar - any variable # hParam - hash # $.sFile[string] # $.sLine[integer] # @log[sLabel;uVar;hParam] ^_append[LOG;$sLabel;$uVar;$hParam] #end @log[] ########################################################################### # dump table (icon) # # sLabel - label # uVar - table # hParam - hash # $.sFile[string] # $.sLine[integer] # @table[sLabel;uVar;hParam] ^if($uVar is "table"){ ^_append[TABLE;$sLabel;$uVar;$hParam] }{ ^_append[INFO;$sLabel;$uVar;$hParam] } #end @table[] ########################################################################### # info message (icon) # # sLabel - label # uVar - any variable # hParam - hash # $.sFile[string] # $.sLine[integer] # @info[sLabel;uVar;hParam] ^_append[INFO;$sLabel;$uVar;$hParam] #end @info[] ########################################################################### # warning message (icon) # # sLabel - label # uVar - any variable # hParam - hash # $.sFile[string] # $.sLine[integer] # @warn[sLabel;uVar;hParam] ^_append[WARN;$sLabel;$uVar;$hParam] #end @warn[] ########################################################################### # error message (icon) # # sLabel - label # uVar - any variable # hParam - hash # $.sFile[string] # $.sLine[integer] # @error[sLabel;uVar;hParam] ^_append[ERROR;$sLabel;$uVar;$hParam] #end @error[] ########################################################################### # exception message (icon) # # hException - $exception # @exception[hException][sLine] $sLine[[{"Type":"EXCEPTION"},{"Class": "$caller.CLASS_NAME ", "Message": "$hException.source ($hException.comment) ", "File": "$hException.file ", "Line": "(${hException.lineno}:$hException.colno) ", "Type": "$hException.type ", "Trace": []}]] ^tLog.append{^sLine.length[]|$sLine|} #end @error[] ########################################################################### @print[][sHeader] $response:X-Wf-Protocol-1[$self.sProtocol] $response:X-Wf-1-Plugin-1[$self.sPlugin] $response:X-Wf-1-Structure-1[$self.sStructure] ^tLog.menu{ $sHeader[X-Wf-1-1-1-^tLog.line[]] $response:$sHeader[$tLog.str] } ########################################################################### @_append[sTypeL;sLabel;uVar;hashParam][sLine] $self.sType[$sTypeL] $self.hParam[^hash::create[$hashParam]] $sLine[[{"Type":"$sType"^if(def $sLabel){,"Label":"^taint[js][$sLabel]"}^if(def $hParam.sFile){,"File":"$hParam.sFile"}^if(def $hParam.sLine){,"Line":$hParam.sLine}^if(def $hParam.sColor){,"Color":"$hParam.sColor"}^if(def $hParam.sCollapsed){,"Collapsed":"$hParam.sCollapsed"}},^_object2js[$uVar]]] ^tLog.append{^sLine.length[]|$sLine|} #end @_append[] ########################################################################### # carefull: for empty strings returned 'null' @_object2js[uVar] $result[] ^if(!( ($uVar is "bool" && ($uVar && ^self._return[true] || ^self._return[false])) || (!def $uVar && ^self._return[null]) || ($uVar is "string" && ^self._return[^self._string2js[$uVar]]) || ($uVar is "double" && ^self._return[$uVar]) || ($uVar is "int" && ^self._return[$uVar]) || ($uVar is "table" && (($uVar && ^self._return[^if($sType eq "TABLE"){^self._table2js[$uVar]}{^self._array2js[$uVar]}]) || ^self._return[null])) || ($uVar is "hash" && (($uVar && ^self._return[^self._hash2js[$uVar]]) || ^self._return[null])) || ($uVar is "date" && ^self._return[new Date(^uVar.unix-timestamp[]000)]) )){ ^self._return[null] } #end @_object2js[] ########################################################################### @_return[sType] $caller.result[$sType] $result(1) #end @_return[] ########################################################################### @_string2js[sData] $result["^taint[js][$sData]"] #end @_string2js[] ########################################################################### @_hash2js[hData][bIsHashOfBool;sKey;uValue] $bIsHashOfBool(1) # check if our hash is hash of bool with only 'true' values ^hData.foreach[sKey;uValue]{ ^if($bIsHashOfBool && !($uValue is "bool" && $uValue)){ $bIsHashOfBool(0) } } ^if($bIsHashOfBool){ $result[[^hData.foreach[sKey;]{^self._string2js[$sKey]}[, ]]] }{ ^rem{ *** in other case return associated array *** } $result[{^hData.foreach[sKey;uValue]{^self._string2js[$sKey]:^if($uValue is "double" || $uValue is "bool" || $uValue is "int"){^self._object2js($uValue)}{^self._object2js[$uValue]}}[, ]}] } #end @_hash2js[] ########################################################################### @_table2js[tData][tKeys] $tKeys[^tData.columns[]] ^if($tKeys){ $result[[[^tKeys.menu{^self._string2js[$tKeys.column]}[,]],^tData.menu{[^tKeys.menu{^self._string2js[$tData.[$tKeys.column]]}[, ]]}[, ]]] }{ ^rem{ *** nameless tables are deprecated, lah. *** } $result[null] } #end @_table2js[] ########################################################################### @t_table2js[tData][tKeys] $tKeys[^tData.columns[]] ^if($tKeys){ $result[[^tKeys.menu{^self._string2js[$tKeys.column]}[,]],^tData.menu{[^tKeys.menu{^self._string2js[$tData.[$tKeys.column]]}[, ]]}[, ]] }{ ^rem{ *** nameless tables are deprecated, lah. *** } $result[null] } #end @_table2js[] ########################################################################### @_array2js[tData][tKeys] $tKeys[^tData.columns[]] ^if($tKeys){ $result[[^tData.menu{{^tKeys.menu{^self._string2js[$tKeys.column]:^self._string2js[$tData.[$tKeys.column]]}[, ]}}[, ]]] }{ ^rem{ *** nameless tables are deprecated, lah. *** } $result[null] } #end @_array2js[]