#!/usr/bin/ruby

# 祝日対応カレンダー (Ruby版)
# Atsushi YAMAMOTO <yamamoto@graco.c.u-tokyo.ac.jp>
# Copyright (c) 2001-2003 Atsushi YAMAMOTO. All rights reserved.
# This program is free software; you can redistribute it and/or modify it
# on condition that redistributions contain above copyright notice.
# This program is provided ``AS IS'' and there are NO WARRANTY.

$DIR,$PRG = $1, $2
$PRG = File.basename(__FILE__)
$DIR = File.dirname(__FILE__)
Dir::chdir($DIR)
require 'Calendar.rb'
require 'getopts'
getopts("ngjosh")
Version = 1.13
Author='Atsushi YAMAMOTO <yamamoto@graco.c.u-tokyo.ac.jp>'
Web='http://aglaia.c.u-tokyo.ac.jp/~yamamoto/Script/Calendar/'
Prgname='祝日対応カレンダー(Ruby版)'

if ARGV.empty?
  month = Time::now.month
  year = Time::now.year
elsif ARGV.length == 1
  month = ARGV[0].to_i
  unless month > 0 and month < 13
    raise "不正な月: 1-12 を使ってください\n"
  end
  year = Time::now.year
  if month < Time::now.month
    year += 1
  end
elsif ARGV.length == 2
  month = ARGV[0].to_i
  year = ARGV[1].to_i
  unless month > 0 and month < 13
    raise "不正な月: 1-12 を使ってください\n"
  end
  unless year > 0 and year < 9999
    raise "不正な年: 1-9999 を使ってください"
  end
else
  raise "#{$PRG} [オプション] [月 [年]]"
end
def print_help
  print <<"USAGE"

 #{Prgname} #{Version}
  usage: #{$PRG} [オプション] [月 [年]]

  -n 制御文字抑制モード
  -s 標準cal互換モード
  -j 和暦モード(-g/-o)
  -h これ

 注意
 春分，秋分の日は，1900年から2099年までの対応です．
 1引数時の動作が，標準のcalとは異なります．
 1年全体のカレンダーは出せません(面倒なので)
 制御文字が邪魔になる時には-nオプションでそれを抑制して下さい．休日などの
 記述も必要ない時には-sで標準cal互換モードになります．
 
 #{Author}
 #{Web}

USAGE
end

if $OPT_h
  print_help()
  exit()
end

if $OPT_j
  month_class = Month_jp
  week_class = Week_jp
elsif $OPT_o
  month_class = Month_jp_old
  week_class = Week_jp
elsif $OPT_g
  month_class = Month_jp_eraname
  week_class = Week_jp
else
  month_class = Month
  week_class = Week
end

if $OPT_n
  puts month_class.new(month, year, "long", week_class).to_s
elsif $OPT_s
  puts month_class.new(month, year, "normal", week_class).to_s
else
  puts month_class.new(month, year, "color", week_class).to_s
end
