diff --git a/bindings/ruby/rdoc b/bindings/ruby/rdoc index 70898e90..ef629b05 100755 --- a/bindings/ruby/rdoc +++ b/bindings/ruby/rdoc @@ -1,5 +1,7 @@ #!/usr/bin/ruby - +# use this for debugging: +#!/usr/bin/ruby -d +# # This is ./rdoc # # Call as diff --git a/bindings/ruby/rdoc_parser_swig.rb b/bindings/ruby/rdoc_parser_swig.rb index 0c5bd415..7305fceb 100644 --- a/bindings/ruby/rdoc_parser_swig.rb +++ b/bindings/ruby/rdoc_parser_swig.rb @@ -107,9 +107,10 @@ def self.reset ## # Prepare to parse a SWIG file + # rdoc 3.4: stats parameter is optional - def initialize(top_level, file_name, content, options, stats) - super + def initialize(top_level, file_name, content, options, stats = nil) + super top_level, file_name, content, options @known_classes = RDoc::KNOWN_CLASSES.dup @content = handle_tab_width handle_ifdefs_in(@content) @@ -363,12 +364,25 @@ def find_body class_name, meth_name, meth_obj, file_content, quiet = false find_modifiers comment, meth_obj if comment #meth_obj.params = params - meth_obj.start_collecting_tokens begin - RDoc::const_get "RubyToken" - tk = RDoc::RubyToken::Token.new nil, 1, 1 - tk.set_text body - meth_obj.offset = offset + # new rdoc + meth_obj.start_collecting_tokens :swig + rescue + # old rdoc + meth_obj.start_collecting_tokens + end + begin + tk = nil + if RUBY_VERSION[0,3] == "3.4" + RDoc::Parser::RipperStateLex::const_get "Token" + tk = RDoc::Parser::RipperStateLex::Token.new nil, 1, 1 + tk.text = body + else + RDoc::const_get "RubyToken" + tk = RDoc::RubyToken::Token.new nil, 1, 1 + tk.set_text body + meth_obj.offset = offset + end rescue NameError # rdoc 2.5 tk = { :line_no => 1, :char_no => 1, :text => body }