From 6271066f0eb2893ec882a661e25850f497a3c2f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= Date: Fri, 17 Oct 2025 16:59:01 +0200 Subject: [PATCH 1/3] add comment about debugging rdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Klaus Kämpf --- bindings/ruby/rdoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bindings/ruby/rdoc b/bindings/ruby/rdoc index 70898e904..ef629b05b 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 From 8d5d9e1115d0bbfd3a236cc375373ca25ea396d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= Date: Fri, 17 Oct 2025 16:59:22 +0200 Subject: [PATCH 2/3] update to handle rdoc 3.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Klaus Kämpf --- bindings/ruby/rdoc_parser_swig.rb | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/bindings/ruby/rdoc_parser_swig.rb b/bindings/ruby/rdoc_parser_swig.rb index 0c5bd4157..fb6f16456 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) @@ -365,10 +366,17 @@ def find_body class_name, meth_name, meth_obj, file_content, quiet = false #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 + 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 } From 6211b65f66f09bf48c5f48f3f0e68d8cc703996a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Klaus=20K=C3=A4mpf?= Date: Fri, 6 Mar 2026 11:47:56 +0100 Subject: [PATCH 3/3] Adapt to Ruby 4 rdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RDoc's internals changed in Ruby 4, catch this transparently. Signed-off-by: Klaus Kämpf --- bindings/ruby/rdoc_parser_swig.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bindings/ruby/rdoc_parser_swig.rb b/bindings/ruby/rdoc_parser_swig.rb index fb6f16456..7305fcebf 100644 --- a/bindings/ruby/rdoc_parser_swig.rb +++ b/bindings/ruby/rdoc_parser_swig.rb @@ -364,7 +364,13 @@ 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 + # 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"