From: Kazuhiro NISHIYAMA Date: 2001-04-12T03:00:12+09:00 Subject: [ruby-dev:12887] parse error in rt/rtparser.rb 直接 ./filter/rt.rb を実行したときは大丈夫なのに、 nDiary(http://www14.cds.ne.jp/~not/product/ndiary/ )経由の ruby diary で実行すると parse error になります。 Ruby for Cygwin の ruby-1.6.3-20010410-i386-cygwin.tar.gz と ruby-1.6.3-20010411-i386-cygwin.tar.gz が壊れているようなので 最新版では試せませんでした。 % ruby -v ruby 1.6.3 (2001-04-06) [i386-cygwin] % ruby diary -- nDiary version 0.9.3.beta6 -- ./filter/rt.rb:12:in `require': /USR/LOCAL/lib/ruby/site_ruby/1.6/rt/rtparser.rb:106: parse error (SyntaxError) lines.each do |line| ^ /USR/LOCAL/lib/ruby/site_ruby/1.6/rt/rtparser.rb:130: parse error lines.each do |line| ^ /USR/LOCAL/lib/ruby/site_ruby/1.6/rt/rtparser.rb:175: parse error tbl.each do |row| ^ /USR/LOCAL/lib/ruby/site_ruby/1.6/rt/rtparser.rb:176: parse error row.each_with_index do |elm, j| ^ /USR/LOCAL/lib/ruby/site_ruby/1.6/rt/rtparser.rb:176: parse error /USR/LOCAL/lib/ruby/site_ruby/1.6/rt/rtparser.rb:181: parse error 1.upto(cols-j-1) do |k| ^ /USR/LOCAL/lib/ruby/site_ruby/1.6/rt/rtparser.rb:182: void value expression break unless row[j+k] == config['colspan'] ^ /USR/LOCAL/lib/ruby/site_ruby/1.6/rt/rtparser.rb:186: parse error from ./filter/rt.rb:12:in `rt' from ./ndiary-lib.rb:170:in `send' from ./ndiary-lib.rb:170:in `filter' from ./ndiary-lib.rb:168:in `each' from ./ndiary-lib.rb:168:in `filter' from ./ndiary-lib.rb:277:in `makeParagraph' from ./ndiary-lib.rb:435:in `tohtml' from ./ndiary-lib.rb:429:in `each' from ./ndiary-lib.rb:429:in `tohtml' from ./ndiary-lib.rb:475:in `writeHTML' from ./ndiary-lib.rb:474:in `each' from ./ndiary-lib.rb:474:in `writeHTML' from ./ndiary-lib.rb:604:in `makeHTML' from ./ndiary-lib.rb:601:in `each' from ./ndiary-lib.rb:601:in `makeHTML' from ./ndiary-lib.rb:689:in `main' from diary:13 -- |ZnZ(ゼット エヌ ゼット) |西山和広(Kazuhiro NISHIYAMA) % cat ./filter/rt.rb 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 end