OSDN Git Service

Corrected typo
[shogi-server/shogi-server.git] / mk_rate
diff --git a/mk_rate b/mk_rate
index dff3977..e3350e5 100755 (executable)
--- a/mk_rate
+++ b/mk_rate
@@ -5,7 +5,7 @@
 # Homepage:: http://sourceforge.jp/projects/shogi-server/
 #
 #--
-# Copyright (C) 2006-2008 Daigo Moriwaki <daigo at debian dot org>
+# Copyright (C) 2006-2009 Daigo Moriwaki <daigo at debian dot org>
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -623,46 +623,25 @@ def identify_id(id)
   id.gsub(/@.*?\+/,"+")
 end
 
-def grep(file)
-  str = File.open(file).read
-
-  if /^N\+(.*)$/ =~ str then black_name = $1.strip end
-  if /^N\-(.*)$/ =~ str then white_name = $1.strip end
-
-  if /^'summary:(.*)$/ =~ str
-    state, p1, p2 = $1.split(":").map {|a| a.strip}    
-    return if state == "abnormal"
-    p1_name, p1_mark = p1.split(" ")
-    p2_name, p2_mark = p2.split(" ")
-    if p1_name == black_name
-      black_name, black_mark = p1_name, p1_mark
-      white_name, white_mark = p2_name, p2_mark
-    elsif p2_name == black_name
-      black_name, black_mark = p2_name, p2_mark
-      white_name, white_mark = p1_name, p1_mark
-    else
-      raise "Never reach!: #{black} #{white} #{p3} #{p2}"
-    end
-  end
-  if /^'\$END_TIME:(.*)$/ =~ str
-    time = Time.parse($1.strip)
-  end
-  if /^'rating:(.*)$/ =~ str
-    black_id, white_id = $1.split(":").map {|a| a.strip}
-    black_id = identify_id(black_id)
-    white_id = identify_id(white_id)
-    if black_id && white_id && (black_id != white_id) &&
-       black_mark && white_mark
-      add(black_mark, black_id, white_id, white_mark, time)
-    end
+# Parse a game result line
+#
+def parse(line)
+  time, state, black_mark, black_id, white_id, white_mark, file = line.split("\t")
+  unless time && state && black_mark && black_id &&
+         white_id && white_mark && file
+    $stderr.puts "Failed to parse the line : #{line}"
+    return
   end
-end
 
-def usage
-  $stderr.puts <<-EOF
-USAGE: #{$0} dir [...]
-  EOF
-  exit 1
+  return if state == "abnormal"
+  time = Time.parse(time)
+  black_id = identify_id(black_id)
+  white_id = identify_id(white_id)
+
+  if black_id && white_id && (black_id != white_id) &&
+     black_mark && white_mark
+    add(black_mark, black_id, white_id, white_mark, time)
+  end
 end
 
 def validate(yaml)
@@ -728,12 +707,15 @@ def main
 
   if ARGV.empty?
     while line = $stdin.gets do
-      next unless %r!.*\.csa$! =~ line
-      grep line.strip
+      parse line.strip
     end
   else
-    while dir = ARGV.shift do
-      Dir.glob( File.join(dir, "**", "*.csa") ) {|f| grep(f)}
+    while file = ARGV.shift do
+      File.open(file) do |f|
+        f.each_line do |line|
+          parse line.strip
+        end
+      end 
     end
   end