#!/usr/bin/env ruby $KCODE= 'e' # # dailyupdate: update tDiary via e-mail. $Revision$ # # Copyright (C) 2003, All right reserved by KAMIYA Satosi# You can redistribute it and/or modify it under GPL2. def usage text = <<-TEXT #{File::basename __FILE__}: update tDiary via daily separated files. usage: ruby dailyupdate.rb [options] arguments: update.rb: path to your update.rb dailyfiles: .td2d TEXT text.gsub( /\t/, '' ) end require 'nkf' require 'cgi' def update_rb_replace(body, title, year, month, day) require 'tdiary' @cgi = CGI::new conf = TDiary::Config::new tdiary = nil # Set CGI Variables @cgi.params['old'] = ["#{year}#{month}#{day}"] @cgi.params['year'] = [year] @cgi.params['month'] = [month] @cgi.params['day'] = [day] @cgi.params['title'] = [NKF::nkf( '-m0 -Xed', title )] @cgi.params['body'] = [NKF::nkf( '-m0 -Xed', body )] @cgi.params['replace'] = ['true'] tdiary = TDiary::TDiaryReplace::new( @cgi, 'show.rhtml', conf ) puts "replace: #{@cgi.params['old']}\n" end def updatefile(filename) if %r|^(\d\d\d\d)(\d\d)(\d\d)\.| =~ File.basename(filename) then year = $1 month = $2 day = $3 File.open(filename) { |fp| body = fp.read title = '' savedir = Dir.pwd Dir.chdir(File::dirname( updaterb )) begin update_rb_replace(body, title, year, month, day) ensure Dir.chdir(savedir) end } end end begin # main routine raise usage if ARGV.length < 1 # parse options require 'getoptlong' parser = GetoptLong::new opt_recurse = false parser.set_options( ['--recurse', '-r', GetoptLong::NO_ARGUMENT], ) begin parser.each do |opt, arg| case opt when '--recurse' opt_recurse = true end end rescue raise usage end updaterb = ARGV.shift if FileTest::symlink?( updaterb ) then org_path = File::dirname( File::readlink( updaterb ) ) else org_path = File::dirname( updaterb ) end $:.unshift( org_path.untaint ) ARGV.each { |filename| if opt_recurse == false then updatefile(filename) else # end } rescue $stderr.puts $! exit 1 end
λ title 変数がないとエラーになるのだが、日毎につけるタイトルは利用していないのでとりあえず空白で。
λ <pre>の中でも、空白行があったらセクションの始まりになってしまうのか。きつー。