[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

PrettyPrint to a web page?

mlanza

5/18/2007 11:41:00 PM

This is gonna sound like a dumb question to you Ruby veterans, but: How
do you dump pretty_print contents to a web page from within a Rails app?

I've tried this and a few other things from a view:

<h1>Session Info</h1>
<% require 'pp' %>
<%= pp(session) %>

--
Posted via http://www.ruby-....

5 Answers

Stefan Mahlitz

5/19/2007 2:32:00 PM

0

Mario T. Lanza wrote:
> This is gonna sound like a dumb question to you Ruby veterans, but: How
> do you dump pretty_print contents to a web page from within a Rails app?
>
> I've tried this and a few other things from a view:
>
> <h1>Session Info</h1>
> <% require 'pp' %>
> <%= pp(session) %>

I don't know with PP, but I'm using this sometimes

<%=h session.inspect %>

Stefan

James Gray

5/19/2007 3:27:00 PM

0

On May 18, 2007, at 6:40 PM, Mario T. Lanza wrote:

> This is gonna sound like a dumb question to you Ruby veterans, but:
> How
> do you dump pretty_print contents to a web page from within a Rails
> app?
>
> I've tried this and a few other things from a view:
>
> <h1>Session Info</h1>
> <% require 'pp' %>
> <%= pp(session) %>

Change that last line to:

<%= PP.pp(session, String.new) %>

pp() accepts a second argument to specify where to put the output.
This just defaults to $> ($stdout). If we specify a String, the
output is collected there instead:

>> require "pp"
=> false
>> Contact = Struct.new(:name, :city, :state, :email)
=> Contact
>> james = Contact.new("James Edward Gray II", "Edmond", "Oklahoma",
"james@grayproductions.net")
=> #<struct Contact name="James Edward Gray II", city="Edmond",
state="Oklahoma", email="james@grayproductions.net">
>> pp_james = String.new
=> ""
>> PP.pp(james, pp_james)
=> "#<struct Contact\n name="James Edward Gray II",\n city="Edmond",
\n state="Oklahoma",\n email="james@grayproductions.net">\n"
>> puts pp_james
#<struct Contact
name="James Edward Gray II",
city="Edmond",
state="Oklahoma",
email="james@grayproductions.net">
=> nil

James Edward Gray II


Stefan Mahlitz

5/19/2007 3:59:00 PM

0

James Edward Gray II wrote:
> On May 18, 2007, at 6:40 PM, Mario T. Lanza wrote:
>
>> This is gonna sound like a dumb question to you Ruby veterans, but: How
>> do you dump pretty_print contents to a web page from within a Rails app?
>>
>> I've tried this and a few other things from a view:
>>
>> <h1>Session Info</h1>
>> <% require 'pp' %>
>> <%= pp(session) %>
>
> Change that last line to:
>
> <%= PP.pp(session, String.new) %>

Using <%=h something %> is better in this case, as #<SomeClass:0x...>
will be escaped (the angle brackets) during template processing.

> pp() accepts a second argument to specify where to put the output. This
> just defaults to $> ($stdout). If we specify a String, the output is
> collected there instead:

Only when specifying PP as receiver for 'pp'.

irb(main):001:0> require "pp"
=> true
irb(main):002:0> output = ""
=> ""
irb(main):003:0> data = self.class.constants.select {|x| x.length < 5}
=> ["IRB", "ARGF", "ENV", "SLex", "IO", "Proc", "GC", "Hash", "TRUE",
"File", "NIL", "PP", "Time", "Data", "Dir", "ARGV", "Math"]
irb(main):004:0> pp(data, output)
["IRB",
"ARGF",
"ENV",
"SLex",
"IO",
"Proc",
"GC",
"Hash",
"TRUE",
"File",
"NIL",
"PP",
"Time",
"Data",
"Dir",
"ARGV",
"Math"]
""
=> nil
irb(main):005:0> output
=> ""

Well, good to see a working version, thanks James Edward.

Stefan

mlanza

5/19/2007 4:42:00 PM

0

Both of these work, thanks.

<pre>
<%=h session.inspect %>
</pre>

<pre>
<%= PP.pp(session, String.new) %>
</pre>

They both have their advantages. The first includes additional
information I want and the second is easier to read.

How would we merging the two results?

--
Posted via http://www.ruby-....

mlanza

5/19/2007 4:44:00 PM

0

Duh! Nevermind that last question.

This produced the best results:

<pre>
<%=h PP.pp(session, String.new) %>
</pre>


--
Posted via http://www.ruby-....