require 'ftools' def mkdir_p(dir) return if FileTest.directory?(dir) mkdir_p(File.dirname(dir)) Dir.mkdir(dir) if File.basename(dir) != "" end def split(input, outputbase, convert_only) output = File.open("#{outputbase}.html", 'w') in_header = true in_footer = false header = '' footer = '' in_section = false section_number = 0 section = nil sections = [] input.each_line do |line| case line when /^

(.*)<\/h2>$/ if convert_only then output.puts line next end section_name = $1 sectionfile = "#{outputbase}-#{section_number}.html" output.puts "

#{section_name}

" section = File.open(sectionfile, 'w') sections << section section.puts header section.puts line in_section = true section_number += 1 when // header << line output.puts line in_header = false when /^
$/ #/ output.puts line in_section = false in_footer = true footer << line else if in_header then line.gsub!("charset=iso-2022-jp", "charset=euc-jp") header << line end if in_footer then footer << line end if in_section then section.puts line else output.puts line end end end output.close sections.each do |section| section.puts footer section.close end end if ARGV.size != 2 then $stderr.puts "Usage: #$0 " exit 1 end inputdir = ARGV[0] outputdir = ARGV[1] mkdir_p(outputdir) inputfiles = Dir[File.join(inputdir, "*.html")] inputfiles.each do |file| puts "Processing #{file}..." r = IO.popen("iconv -f iso-2022-jp -t euc-jp #{file}", "r") outputbase = File.join(outputdir, File.basename(file)) outputbase.sub!(/\.html$/, '') if file =~ /index.html/ then split(r, outputbase, true) else split(r, outputbase, false) end end File.open(File.join(outputdir, ".htaccess"), "w") do |htaccess| htaccess.puts <<-END LanguagePriority jp en AddCharset euc-jp .html AddLanguage jp .jp END end mkdir_p(File.join(outputdir, "images")) images = Dir[File.join(inputdir, "images", "*")] images.each do |image| outputfile = File.join(outputdir, "images", File.basename(image)) File.copy(image, outputfile, true) end inputcss = File.join(inputdir, "rhg.css") outputcss = File.join(outputdir, "rhg.css") File.copy(inputcss, outputcss, true)