X-Git-Url: http://git.sourceforge.jp/view?p=shogi-server%2Fshogi-server.git;a=blobdiff_plain;f=mk_html;h=956be0a2f33c028d8ced2f6a578ad8d1c9d64d1c;hp=d8c6c535308a17cfcd74e2f156916bad8d55acfd;hb=f9c3575027bb39a0e24add66804e2771a52e71c5;hpb=6ed2601957e257beca401ff1423d34b5a3ace440 diff --git a/mk_html b/mk_html index d8c6c53..956be0a 100755 --- a/mk_html +++ b/mk_html @@ -1,48 +1,110 @@ #!/usr/bin/ruby -## $Id$ - -## Copyright (C) 2006 Daigo Moriwaki -## -## 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 -## the Free Software Foundation; either version 2 of the License, or -## (at your option) any later version. -## -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -# -# This generates html pages from players.yaml. -# -# Sample: -# $ ./mk_html < players.yaml > rating.html -# +# $Id$ +# +# Author:: Daigo Moriwaki +# Homepage:: http://sourceforge.jp/projects/shogi-server/ +# +#-- +# Copyright (C) 2006-2008 Daigo Moriwaki +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +#++ +# +# == Synopsis +# +# mk_html generates an html page from a players.yaml. +# +# == Usage +# +# ./mk_html [OPTION] < players.yaml > rating.html +# +# [-h, --help] +# show help +# +# [-w,--wdoor] +# adpot wdoor style +# +# [--footer filename] +# insert contents in the filename at the bottom of a genrated page. +# +# == Prerequire +# +# * Ruby 1.8.7 +# +# $ sudo aptitude install ruby ruby1.8 +# +# == Example +# +# $ ./mk_html --footer ./wdoor_1000.html < players.yaml > players.html +# +# $ cat ./wdoor-1000.html +#

The average of the rates in a group is always 1000. +#

BACK +# +require 'optparse' require 'yaml' require 'erb' include ERB::Util def show_date(time) - time.strftime("%Y-%m-%d") + if (Time.now - time < 30*60) + return "on line" + elsif (Time.now - time < 24*60*60) + return time.strftime("%Y-%m-%d") + # return "%d hours ago" % [(Time.now - time)/3600] + else + return time.strftime("%Y-%m-%d") + end end -def usage - $stderr.puts <<-EOF -USAGE: #{$0} - EOF - exit 1 +def remove_long_to_see_players(file) + return unless file["players"][999] # only for Not-Yet-Rated players + + file["players"][999].delete_if do |key, value| + value['last_modified'] < Time.now - 24*3600*30 # 30 days + end end def main + $wdoor = false + $footer_content = nil + opts = OptionParser.new + opts.banner = "Usage: mk_html [OPTIONS]" + opts.on("--footer filename", String, "Insert contents of the filename at the bottom of a genrated page") do |filename| + unless File.exist?(filename) + $stderr.puts "File not found: %s" % [filename] + raise + end + $footer_content = File.open(filename).read + end + opts.on("-w","--wdoor", "adopt a wdoor style") { $wdoor=true } + opts.on_tail("-h", "--help", "show this message") do + puts opts + exit + end + begin + opts.parse(ARGV) + rescue + puts opts + exit -1 + end + lines = "" - while l = gets do + while l = $stdin.gets do lines << l end file = YAML::load(lines) @@ -56,11 +118,31 @@ def main group_names << "Not-Yet-Rated Players" end end + remove_long_to_see_players(file) popup_id = 0 + if $wdoor + yss_rate = 0 + file["players"].keys.each do |group_index| + file["players"][group_index].each do |player, yaml| + if player == "YSS+707d4f98d9d2620cdaab58f19d02a2e4" + yss_rate = yaml['rate'] + end + end + end + end + file["players"].sort.each do |key, yaml| # sort groups in the order written in players.yaml - sorted_keys = yaml.keys.sort {|a,b| yaml[b]['rate'] <=> yaml[a]['rate']} # sort players in a group by one's rate + sorted_keys = yaml.keys.sort do |a,b| + # sort players in a group by one's rate + if yaml[b]['rate'] == 0 && yaml[a]['rate'] == 0 + # mainly for not-rated-yet players + yaml[b]['last_modified'] <=> yaml[a]['last_modified'] + else + yaml[b]['rate'] <=> yaml[a]['rate'] + end + end top_rate = nil table = ERB.new(<") % sorted_keys.each do |key| @@ -72,9 +154,10 @@ def main player_decoration = "default" - case (Time.now - last_modified)/(60*60*24) - when (0..1) then player_decoration = "today" - when (0..7) then player_decoration = "this_week" + case (Time.now - last_modified)/60 # minutes + when (0..30) then player_decoration = "current" + when (0..(1*60*24)) then player_decoration = "today" + when (0..(7*60*24)) then player_decoration = "this_week" end case key @@ -89,7 +172,7 @@ def main %> - <%= h yaml[key]['name'] %> + <%= h yaml[key]['name'] %>