#!/usr/bin/env ruby
$KCODE = "e"

module Rdfilter
  
  # rd ファイルのページを分割
  def rdpagebreak(indata)
    
    outdata_ary  = []
    pagedata = ""
    count = 0
    
    indata.each{ |i|
    if  i =~ /^=newpage/
      if count == 0 then
	outdata_ary.push(pagedata + "\n\n=end\n\n")
      else
	outdata_ary.push("\n=begin\n\n" + pagedata + "\n\n=end\n\n")
      end
      count = 1
      pagedata = ""
    else 
      pagedata << i 
    end
    }
    if count == 0
      outdata_ary.push(pagedata)
    else 
      outdata_ary.push("\n=begin\n\n" + pagedata + "\n\n")
    end
    return outdata_ary
    
  end

  def rdpagebreak_make(infile)

    # ファイルからデータ抽出
    rfile = open(infile,"r")
    indata = []
    rfile.each{ |line|
      indata.push(line)
    }
    rfile.close
    
#    print "rd_pagebreak.rb start\n"

    # rd ファイル分割フィルター
    outdata_ary = rdpagebreak(indata)
    
    # 出力
    outfile_ary = []
    if outdata_ary.size == 1 then
      outfile_ary[0] = infile
    else
      outdata_ary.size.times{ |num|
	filenum = "%03d"  % (num + 1)
	outfile_ary.push("#{File.basename(infile, ".rd")}_#{filenum}.rd") 
      }
    end
    
    outfile_ary.size.times { |num|
      File.delete(outfile_ary[num]) if File.exist?(outfile_ary[num])
      wfile = open(outfile_ary[num],"w") 
      wfile.print outdata_ary[num]
      wfile.close
      print "  #{outfile_ary[num]} create.\n" if outfile_ary.size > 1
    }
    return outfile_ary
    
=begin
    # 出力
    if outdata_ary.size == 1 then
#      print "  =newpage not found.\n"
      count = 0
    else
      outdata_ary.size.times{ |num|
	
	filenum = "%03d"  % (num + 1)
	outfile = "#{File.basename(infile, ".rd")}_#{filenum}.rd"
	
	File.delete(outfile) if File.exist?(outfile)
	wfile = open(outfile,"w") 
	wfile.print outdata_ary[num]
	wfile.close
#	print "  #{outfile} criate.\n"
      }
      count = 1
    end
    return count
#    print "rd_pagebreak.rb end\n"
=end
  end
  
end

  
######################################################
if $0 == __FILE__

  include Rdfilter
  # 入力ファイル解析
  opt = ARGV
  infile = Dir.pwd + "/" + ARGV[0]

  rdpagebreak_make(infile)
  
end




