arg… You made me do it. It sucks, but it works for basic types.
You must use it with an Array or Hash otherwise you get no headers:
class Object
def to_html(value = self.to_s);
return “#{value}”
end
end
class String
def to_html; super(self) end
end
class Symbol
def to_html; super(’:’ + self.to_s) end
end
class NilClass
def to_html; super(‘nil’) end
end
class Hash
def to_html
html = “
#{self.class} | ”
self.each_pair do |k, v|
html += “#{k.to_html}#{v.to_html} |
”
end
html += “
”
super(html)
end
end
class Array
def to_html
html = “
#{self.class} | ”
self.size.times do |index|
html += “#{index}#{self[index]} |
”
end
html += “
”
super(html)
end
end
variable = {
“first”=> “1”,
:a23 => “second”,
“third”=> {
nil => “inner third 1”,
“inner third 2”=>“yeah”
},
:values => [1, 2, 3, 4],
nil => “fourth”
}
Then you can do:
<%= variable.to_html %>
To get output that looks very similar to the dBug stuff for Php. I
used the styles that were at the link you provided, but I had to change
up the names to fit better:
table.RdBug_Array,table.RdBug_Object,table.RdBug_Hash,table.RdBug_String,table.RdBug_Symbol
{
font-family:Verdana, Arial, Helvetica, sans-serif; color:#000000;
font-size:12px;
}
.RdBug_ArrayHeader,
.RdBug_ObjectHeader,
.RdBug_HashHeader,
.RdBug_StringCHeader,
.RdBug_SymbolHeader
{ font-weight:bold; color:#FFFFFF; }
/* array */
table.RdBug_Array { background-color:#006600; }
table.RdBug_Array td { background-color:#FFFFFF; }
table.RdBug_Array td.RdBug_ArrayHeader { background-color:#009900; }
table.RdBug_Array td.RdBug_ArrayKey { background-color:#CCFFCC; }
/* resource */
table.RdBug_Hash { background-color:#006600; }
table.RdBug_Hash td { background-color:#FFFFFF; }
table.RdBug_Hash td.RdBug_HashHeader { background-color:#009900; }
table.RdBug_Hash td.RdBug_HashKey { background-color:#CCFFCC; }