[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Data output

Stuart Clarke

11/6/2008 5:24:00 PM

I am processing data from an array which basically involves me searching
for specific information and outputting the results that match eg.

.......
if data == 100
puts "#{data.time_written}"

I have just inserted a step which adds some additional criteria. This
states if you find data that equals 100 does it happens more than 10
times in one day.

This all works fine. What i want is some kind of nested if statement
thats does the following:

if data == 100
if data happens more than 5 times in one day
print out the results of all the data that equals 100 but highlight
(colour code, italics etc)the data within the results that happens more
than 5 times in a day.

An example of the results might be

100 monday - - - BOLD
100 monday - - - BOLD
100 monday - - - BOLD
100 monday - - - BOLD
100 monday - - - BOLD
100 monday - - - BOLD
100 tuesday - - - NORMAL

Hope this makes sense.

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

2 Answers

Axel Etzold

11/6/2008 6:56:00 PM

0


-------- Original-Nachricht --------
> Datum: Fri, 7 Nov 2008 02:23:40 +0900
> Von: Stuart Clarke <stuart.clarke1986@gmail.com>
> An: ruby-talk@ruby-lang.org
> Betreff: Data output

> I am processing data from an array which basically involves me searching
> for specific information and outputting the results that match eg.
>
> .......
> if data == 100
> puts "#{data.time_written}"
>
> I have just inserted a step which adds some additional criteria. This
> states if you find data that equals 100 does it happens more than 10
> times in one day.
>
> This all works fine. What i want is some kind of nested if statement
> thats does the following:
>
> if data == 100
> if data happens more than 5 times in one day
> print out the results of all the data that equals 100 but highlight
> (colour code, italics etc)the data within the results that happens more
> than 5 times in a day.
>
> An example of the results might be
>
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 tuesday - - - NORMAL
>
> Hope this makes sense.
>
> Regards
> --
> Posted via http://www.ruby-....

Dear Stuart,

you can output your report as a html document using textile:

http://whytheluckystiff.net/ruby...

using very simple markup styles.

Best regards,

Axel


--
"Feel free" - 5 GB Mailbox, 50 FreeSMS/Monat ...
Jetzt GMX ProMail testen: http://www.gmx.net/de/...

Jesús Gabriel y Galán

11/7/2008 1:08:00 PM

0

On Thu, Nov 6, 2008 at 6:23 PM, Stuart Clarke
<stuart.clarke1986@gmail.com> wrote:
> I am processing data from an array which basically involves me searching
> for specific information and outputting the results that match eg.
>
> .......
> if data == 100
> puts "#{data.time_written}"
>
> I have just inserted a step which adds some additional criteria. This
> states if you find data that equals 100 does it happens more than 10
> times in one day.
>
> This all works fine. What i want is some kind of nested if statement
> thats does the following:
>
> if data == 100
> if data happens more than 5 times in one day
> print out the results of all the data that equals 100 but highlight
> (colour code, italics etc)the data within the results that happens more
> than 5 times in a day.
>
> An example of the results might be
>
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 monday - - - BOLD
> 100 tuesday - - - NORMAL

This is how I'd do it: first build an histogram of the data. In this case
you want to count how many there are of a combination of data and day.
Then print the array checking against the histogram for choosing style:

irb(main):001:0> TimeData = Struct.new :data, :day
=> TimeData
irb(main):002:0> a = []
=> []
irb(main):003:0> 6.times {a << TimeData.new(100, "monday")}
=> 6
irb(main):004:0> a << TimeData.new(100, "tuesday")
=> [#<struct TimeData data=100, day="monday">, #<struct TimeData
data=100, day="monday">, #<struct TimeData data=100, day="monday">,
#<struct TimeData data=100, day="monday">, #<struct TimeData data=100,
day="monday">, #<struct TimeData data=100, day="monday">, #<struct
TimeData data=100, day="tuesday">]
irb(main):005:0> h = Hash.new(0)
=> {}
irb(main):007:0> a.inject(h) {|histo,time| h[[time.data, time.day]] += 1}
=> 1
irb(main):008:0> h
=> {[100, "tuesday"]=>1, [100, "monday"]=>6}
irb(main):009:0> a.each do |time|
irb(main):010:1* if h[[time.data, time.day]] > 5
irb(main):011:2> puts "<bold>#{time.data} #{time.day}</bold>"
irb(main):012:2> else
irb(main):013:2* puts "<normal>#{time.data} #{time.day}</normal>"
irb(main):014:2> end
irb(main):015:1> end
<bold>100 monday</bold>
<bold>100 monday</bold>
<bold>100 monday</bold>
<bold>100 monday</bold>
<bold>100 monday</bold>
<bold>100 monday</bold>
<normal>100 tuesday</normal>

Hope this helps.

Jesus.