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 = 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)