--Apple-Mail-1-906393000 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Begin forwarded message: > From: Eduardo Vaz de Lima <eduardo_lima22 / yahoo.com> > Date: November 23, 2007 5:33:57 AM CST > To: submission / rubyquiz.com > Subject: Please Forward: Ruby Quiz Submission - Stock Portfolios > > Hi, > > Sorry for sending this solution so late. I am new in Ruby > programming!! > > I would like to share my solution with the community. > > I wrote a script that fetches stock prices from Yahoo Finance and > compares with purchase price and amount stored in a separate text > file. > > In the file stock.txt insert stock name, purchase date, stock price > and amount (separated by ";"). > > Best regards, > > Eduardo Lima > > > > Be a better pen pal. Text or chat with friends inside Yahoo! Mail. > See how. --Apple-Mail-1-906393000 Content-Transfer-Encoding: quoted-printable Content-Type: application/octet-stream; x-unix-mode=0666; name=stock.rb Content-Disposition: attachment; filename=stock.rb require=20'open-uri'=0D=0Arequire=20'csv'=0D=0Arequire=20'date'=0D=0A=0D=0A= #url=20=3D=20= URI.parse('http://br.finance.yahoo.com/d/quotes.csv?s=3DFVPSC3.SA&f=3Dsl1d= 1t1c1ohgv&e=3D.csv')=0D=0A#url2=20=3D=20= URI.parse('http://br.finance.yahoo.com/d/quotes.csv?s=3DIGBR3.SA&f=3Dsl1d1= t1c1ohgv&e=3D.csv')=0D=0A=0D=0A#=20Reads=20input=20stock=20names=20and=20= values=20from=20stock.txt=20file=20and=20store=20in=20local=20variables=0D= =0Adef=20read_input_stock(file_name)=0D=0A=20=20File.open(file_name)=20= do=20|handle|=0D=0A=20=20=20=20handle.each_line=20do=20|stock|=0D=0A=20=20= =20=20=20=20input_stock_name=20=20=20=20=20=20=20=3D=20= stock.split(';')[0]=0D=0A=20=20=20=20=20=20@input_purchase_date=20=20=20= =3D=20stock.split(';')[1].strip=0D=0A=20=20=20=20=20=20= @input_purchase_value=20=20=3D=20stock.split(';')[2]=0D=0A=20=20=20=20=20= =20@input_purchase_amount=20=3D=20stock.split(';')[3]=0D=0A=20=20=20=20=20= =20=0D=0A=20=20=20=20=20=20url=20=3D=20= URI.parse("http://br.finance.yahoo.com/d/quotes.csv?s=3D#{input_stock_name= }&f=3Dsl1d1t1c1ohgv&e=3D.csv")=0D=0A=20=20=20=20=20=20= get_stock_value(url)=0D=0A=20=20=20=20=20=20=0D=0A=20=20=20=20end=0D=0A=20= =20end=0D=0Aend=0D=0A=0D=0A#=20reads=20stock=20=EDnformation=20from=20= web=20site=0D=0Adef=20get_stock_value(url)=0D=0A=20=20open(url)=20{|f|=0D= =0A=20=20=20=20f.each_line=20{|line|=20=0D=0A=20=20=20=20=20=20= stock_name=20=20=20=20=20=20=20=20=20=20=3D=20line.split(';')[0]=0D=0A=20= =20=20=20=20=20@stock_actual_value=20=3D=20line.split(';')[1]=0D=0A=20=20= =20=20=20=20stock_actual_date=20=20=20=3D=20line.split(';')[2]=0D=0A=20=20= =20=20=20=20stock_actual_time=20=20=20=3D=20line.split(';')[3]=0D=0A=20=20= =20=20=20=20=0D=0A=20=20=20=20=20=20#=20Difference=20between=20puchase=20= and=20actual=20value=0D=0A=20=20=20=20=20=20stock_diff=20=3D=20= @stock_actual_value.to_f=20=20-=20 / input_purchase_value.to_f=0D=0A=20=20=20= =20=20=20=0D=0A=20=20=20=20=20=20=0D=0A=20=20=20=20=20=20#=20Percentual=20= diff=0D=0A=20=20=20=20=20=20per=20=3D=20((@stock_actual_value.to_f=20/=20= @input_purchase_value.to_f)=20-=201)*=20100=0D=0A=20=20=20=20=20=20=0D=0A= =20=20=20=20=20=20#=20Sum=20of=20actual=20value=0D=0A=20=20=20=20=20=20= @total=20+=3D=20 / stock_actual_value.to_f=20*=20= @input_purchase_amount.to_f=0D=0A=20=20=20=20=20=20=0D=0A=20=20=20=20=20=20= #=20yyyy,mm,dd=20yahoo=20=3D>=20mm/dd/yyyy=0D=0A=20=20=20=20=20=20= actual_date_year=20=20=3D=20stock_actual_date.split('/')[2].to_i=20=0D=0A= =20=20=20=20=20=20actual_date_month=20=3D=20= stock_actual_date.split('/')[0].to_i=0D=0A=20=20=20=20=20=20= actual_date_day=20=20=20=3D=20stock_actual_date.split('/')[1].to_i=20=0D=0A= =20=20=20=20=20=20=0D=0A=20=20=20=20=20=20#=20yyyy,mm,dd=20input=20= yyyy-mm-dd=20=20=20=20=20=20=20=20=20=20=20=20=20=20=0D=0A=20=20=20=20=20= =20purchase_date_year=20=20=3D=20 / input_purchase_date.split('-')[0].to_i=0D= =0A=20=20=20=20=20=20purchase_date_month=20=3D=20= @input_purchase_date.split('-')[1].to_i=0D=0A=20=20=20=20=20=20= purchase_date_day=20=20=20=3D=20 / input_purchase_date.split('-')[2].to_i=0D= =0A=20=20=20=20=20=20=0D=0A=20=20=20=20=20=20#=20Days=20between=20atual=20= and=20purchase=0D=0A=20=20=20=20=20=20age=20=3D=20= Date.new(actual_date_year,actual_date_month,actual_date_day)=20-=20=0D=0A= =20=20=20=20=20=20= Date.new(purchase_date_year,purchase_date_month,purchase_date_day)=0D=0A=20= =20=20=20=20=20=0D=0A=20=20=20=20=20=20=0D=0A=20=20=20=20=20=20= printf("%-10s=20%10s=20%4s=20%6.2f=20\t%s=20%4s=20%6.2f=20\t%2s=20%4.2f=20= %10s=20%8.2f=20%s",=20=0D=0A=20=20=20=20=20=20stock_name,=20=0D=0A=20=20=20= =20=20=20@input_purchase_date,=0D=0A=20=20=20=20=20=20"R$",=0D=0A=20=20=20= =20=20=20 / input_purchase_value.to_f=20*=20 / input_purchase_amount.to_f,=0D= =0A=20=20=20=20=20=20stock_actual_date,=0D=0A=20=20=20=20=20=20"R$",=20=0D= =0A=20=20=20=20=20=20 / stock_actual_value.to_f=20*=20= @input_purchase_amount.to_f,=0D=0A=20=20=20=20=20=20"R$",stock_diff,=0D=0A= =20=20=20=20=20=20"#{age}=20days",=0D=0A=20=20=20=20=20=20per,=0D=0A=20=20= =20=20=20=20"%")=0D=0A=20=20=20=20=20=20puts=0D=0A=20=20=20=20}=20=20=20=20= =20=20=0D=0A=20=20}=0D=0Aend=0D=0A=0D=0A@total=20=3D=200=0D=0A=0D=0Aputs=0D= =0Aprintf("%-10s=20%10s=20%15s=20\t%5s=20%11s=20%13s=20%5s=20%15s",=20=0D= =0A"Stock",=0D=0A"Purchase=20",=20=20#=20Purchase=20Date=0D=0A"Purchase=20= ",=20=20#=20Purchase=20Value=0D=0A"Actual=20",=20=20=20=20#=20Actual=20= Value=0D=0A"Actual=20",=20=20=20=20#=20Actual=20Date=0D=0A"Difference",=20= #=20Difference=0D=0A"Age",=20=20=20=20=20=20=20=20#=20Age=0D=0A= "Percentual")=20#=20Percentual=0D=0A=0D=0Aprintf("\n%16s=20%16s=20%10s=20= %12s",=20=0D=0A"Date",=0D=0A"Value",=0D=0A"Date",=0D=0A"Value",=0D=0A= "Difference",=0D=0A"Age",=0D=0A"Percentual")=0D=0A=0D=0A=0D=0Aputs=20= "\n---------+------------+------------+-------------+------------+--------= --+----------+----------+"=0D=0A=0D=0Aread_input_stock("stock.txt")=0D=0A= =0D=0Aprintf("%54s=20%4.2f",=20"Total=20R$",=20@total)=0D=0A=0D=0A=0D=0A= --Apple-Mail-1-906393000 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed > > VALE5.SA; 2007-03-17; 17,00; 100 > IGBR3.SA; 2007-10-22; 21,00; 100 > VALE5.SA; 2007-05-20; 19,00; 10 --Apple-Mail-1-906393000--