$stderr = $stdout

class Filter

  def rt(str, type)

    case type
    when :PRE
      if str.sub!(/\ART:(.*)\n/, '') then
        caption = $1

        require 'rt/rtparser'
        require 'rt/rt2html-lib'

        @rt_visitor ||= RT::RT2HTMLVisitor.new

        if caption.empty?
          str.gsub!(/^\s+$/,'')
        elsif str.sub!(/^\s+$/,'') && str.gsub!(/^\s+$/,'')
          # ConfigBlock, HeaderBlock, BodyBlockがあった。
          str[0,0] = "caption = #{caption}\n"
        else
          # ConfigBlockが無かった。
          str[0,0] = "caption = #{caption}\n\n"
        end

        # RTtoolに渡す。
        str.replace(@rt_visitor.visit(RT::RTParser::parse(str)))

        # 後はそのまま出力
        return :THROUGH
      end
    end

  end

end

if __FILE__ == $0
  s=<<-END
RT: test
1,2
3,4
  END
  Filter.new.rt(s,:PRE)
  puts s

  s=<<-END
RT: test 2
1,2
 
3,4
5,6
  END
  Filter.new.rt(s,:PRE)
  puts s

  s=<<-END
RT: test 3
delimiter = :
 
1:2
 
3:4
5:6
  END
  Filter.new.rt(s,:PRE)
  puts s

  s=<<-END
RT:
no, caption
  END
  Filter.new.rt(s,:PRE)
  puts s

end

