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>(.*)<\/h2>$/
      if convert_only then
        output.puts line
        next
      end
      section_name = $1
      sectionfile = "#{outputbase}-#{section_number}.html"
      output.puts "<h2><a href=\"#{File.basename(sectionfile)}\">#{section_name}</a><br></h2>"
      section = File.open(sectionfile, 'w')
      sections << section
      section.puts header
      section.puts line
      in_section = true
      section_number += 1
    when /<body>/
      header << line
      output.puts line
      in_header = false
    when /^<hr>$/ #/
      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 <inputdir> <outputdir>"
  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)


