Le Lann Jean-Christophe wrote: > Hello ! > > I becoming totally mad about this simple script, whose goal is to > capture various information (written in a single file) about some chess > games : the conversion I need for the month seems to be the problem : I > am using a hash to convert "Feb" into 2,etc. But, this works only for > the first line of my file !? > > The error reported is "can't convert String into Integer (TypeError)", > but I can't figure what it means. > > Can someone help ? > Thx > JC > > > > require 'date' > > # content of the data file > # 16: + 1181 W 1347 tihtu [ br 2 12] B06 Res Sun Feb 17, 05:05 > PST 2008 > # 17: - 1174 B 1242 SUPERFRIJOL [ br 2 12] C50 Mat Sun Feb 17, 09:03 > PST 2008 > # 18: + 1188 W 1480 kalvehale [ br 2 12] D52 Res Sun Feb 17, 09:13 > PST 2008 > # 19: + 1193 B 1048 borsodilaci [ br 2 12] D00 Mat Sun Feb 17, 09:27 > PST 2008 > # 20: + 1206 W 1439 pipharlow [ br 2 12] A45 Res Sun Feb 17, 09:32 > PST 2008 > # 21: - 1192 B 874 tealush [ br 2 12] C20 Res Sun Feb 17, 09:46 > PST 2008 > # 22: + 1194 W 861 PhatWebah [ br 2 12] A40 Mat Sun Feb 17, 09:54 > PST 2008 > # 23: - 1190 B 1420 Alquimista [ br 2 12] C47 Res Sun Feb 17, 09:59 > PST 2008 > # 24: - 1181 W 1156 jkjkjk [ br 2 12] D06 Mat Sun Feb 17, 10:19 > PST 2008 > # 25: - 1175 B 1266 Entangle [ br 2 12] B40 Mat Sun Feb 17, 11:34 > PST 2008 > > > > fileName=ARGV[0] if ARGV[0] > > h={ > 'Jan'=>1, > 'Feb'=>2, > 'Mar'=>3, > 'Apr'=>4, > 'May'=>5, > 'Jun'=>6, > 'Jul'=>7, > 'Aug'=>8, > 'Sep'=>9, > 'Oct'=>10, > 'Nov'=>11, > 'Dec'=>12, > } > > > lineNumber=0 > month = h['Feb'] > File.open(fileName,'r') do |f| > > > f.each do |line| > > lineNumber+=1 > > res=line.match(/(\d+): (\+|\-) (\d+) (W|B) (\d+) (\w+) > (.*\]) (\w+) (\w+) (\w+) (\w+)(\s*)(\w+), (\d+):(\d+) (\w*) (\d+)\n/) > > if res > puts "\nprocessing line #{lineNumber}\n" > puts line > num = res.captures[0] > score = res.captures[2].to_i > m = res.captures[10] > date = res.captures[12].to_i > hour = res.captures[13].to_i > minu = res.captures[14].to_i > year = res.captures[16].to_i > > puts "captured month = #{m}" > > month = h[m] # <<== can't convert String into Integer > (TypeError) on the second line of the file > > puts "#{m} corresponds to month #{month}" > > puts num,score,m,date,hour,minu,year > > #dateTime = DateTime.new(y=year,m=2, d=date, h=hour, > min=minu, s=0) > end > end > end > > > My session : > > processing line 1 > 16: + 1181 W 1347 tihtu [ br 2 12] B06 Res Sun Feb 17, 05:05 > PST 2008 > captured month = Feb > Feb corresponds to month 2 > 16 > 1181 > Feb > 17 > 5 > 5 > 2008 > > processing line 2 > 17: - 1174 B 1242 SUPERFRIJOL [ br 2 12] C50 Mat Sun Feb 17, 09:03 > PST 2008 > captured month = Feb > ChessRate.rb:59:in `[]': can't convert String into Integer (TypeError) > from ChessRate.rb:59 > from ChessRate.rb:40:in `each' > from ChessRate.rb:40 > from ChessRate.rb:37:in `open' > from ChessRate.rb:37 fileName = "data.txt" h={ 'Jan'=>1, 'Feb'=>2, 'Mar'=>3, 'Apr'=>4, 'May'=>5, 'Jun'=>6, 'Jul'=>7, 'Aug'=>8, 'Sep'=>9, 'Oct'=>10, 'Nov'=>11, 'Dec'=>12, } puts h["Feb"] h = [1, 2, 3] puts h["Feb"] --output:-- 2 r1test.rb:21:in `[]': cannot convert String into Integer (TypeError) from r1test.rb:21 So, I would guess that you didn't actually post the code that produced that error message. When I run the code you posted, this is the output: processing line 1 # 16: + 1181 W 1347 tihtu [ br 2 12] B06 Res Sun Feb 17, 05:05 PST 2008 captured month = Feb Feb corresponds to month 2 16 1181 Feb 17 5 5 2008 before res in res processing line 2 # 17: - 1174 B 1242 SUPERFRIJOL [ br 2 12] C50 Mat Sun Feb 17, 09:03 PST 2008 captured month = Feb Feb corresponds to month 2 17 1174 Feb 17 9 3 2008 before res in res processing line 3 # 18: + 1188 W 1480 kalvehale [ br 2 12] D52 Res Sun Feb 17, 09:13 PST 2008 captured month = Feb Feb corresponds to month 2 18 1188 Feb 17 9 13 2008 before res in res processing line 4 # 19: + 1193 B 1048 borsodilaci [ br 2 12] D00 Mat Sun Feb 17, 09:27 PST 2008 captured month = Feb Feb corresponds to month 2 19 1193 Feb 17 9 27 2008 before res in res processing line 5 # 20: + 1206 W 1439 pipharlow [ br 2 12] A45 Res Sun Feb 17, 09:32 PST 2008 captured month = Feb Feb corresponds to month 2 20 1206 Feb 17 9 32 2008 before res before res before res in res processing line 8 # 23: - 1190 B 1420 Alquimista [ br 2 12] C47 Res Sun Feb 17, 09:59 PST 2008 captured month = Feb Feb corresponds to month 2 23 1190 Feb 17 9 59 2008 before res in res processing line 9 # 24: - 1181 W 1156 jkjkjk [ br 2 12] D06 Mat Sun Feb 17, 10:19 PST 2008 captured month = Feb Feb corresponds to month 2 24 1181 Feb 17 10 19 2008 before res in res processing line 10 # 25: - 1175 B 1266 Entangle [ br 2 12] B40 Mat Sun Feb 17, 11:34 PST 2008 captured month = Feb Feb corresponds to month 2 25 1175 Feb 17 11 34 2008 -- Posted via http://www.ruby-forum.com/.