From 3337e5b85beff388cff9bf10b8e9a642cfc8115e Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Sat, 22 Nov 2025 21:58:09 +0000 Subject: [PATCH 1/3] Refactor RubyTools#get_tk --- lib/rdoc/parser/ruby_tools.rb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/rdoc/parser/ruby_tools.rb b/lib/rdoc/parser/ruby_tools.rb index 40ea517c4d..3739f4627d 100644 --- a/lib/rdoc/parser/ruby_tools.rb +++ b/lib/rdoc/parser/ruby_tools.rb @@ -20,7 +20,7 @@ def get_tk if @tokens.empty? then if @scanner_point >= @scanner.size - return nil + return else tk = @scanner[@scanner_point] @scanner_point += 1 @@ -31,16 +31,14 @@ def get_tk tk = @tokens.shift end - if tk == nil || :on___end__ == tk[:kind] - tk = nil + if tk.nil? || :on___end__ == tk[:kind] + return end - return nil unless tk - # inform any listeners of our shiny new token - @token_listeners.each do |obj| + @token_listeners&.each do |obj| obj.add_token(tk) - end if @token_listeners + end tk end From ebb5f9f5aa9b722e0f016c098a56cadf46deb627 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Sat, 22 Nov 2025 21:59:33 +0000 Subject: [PATCH 2/3] Avoid repeatedly calling File.basename in TopLevel --- lib/rdoc/code_object/top_level.rb | 35 ++++++++++++++++--------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/lib/rdoc/code_object/top_level.rb b/lib/rdoc/code_object/top_level.rb index 93d318901b..2e3aa528c9 100644 --- a/lib/rdoc/code_object/top_level.rb +++ b/lib/rdoc/code_object/top_level.rb @@ -16,6 +16,16 @@ class RDoc::TopLevel < RDoc::Context attr_accessor :absolute_name + ## + # Base name of this file + + attr_reader :base_name + + ## + # Base name of this file without the extension + + attr_reader :page_name + ## # All the classes or modules that were declared in # this file. These are assigned to either +#classes_hash+ @@ -40,6 +50,14 @@ def initialize(absolute_name, relative_name = absolute_name) @relative_name = relative_name @parser = nil + if relative_name + @base_name = File.basename(relative_name) + @page_name = @base_name.sub(/\.(rb|rdoc|txt|md)$/i, '') + else + @base_name = nil + @page_name = nil + end + @classes_or_modules = [] end @@ -105,13 +123,6 @@ def add_to_classes_or_modules(mod) @classes_or_modules << mod end - ## - # Base name of this file - - def base_name - File.basename @relative_name - end - alias name base_name ## @@ -204,16 +215,6 @@ def object_class end end - ## - # Base name of this file without the extension - - def page_name - basename = File.basename @relative_name - basename =~ /\.(rb|rdoc|txt|md)$/i - - $` || basename - end - ## # Path to this file for use with HTML generator output. From 10611480202ea6152a504de2bf84c65d8add3203 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Sun, 23 Nov 2025 10:25:20 +0000 Subject: [PATCH 3/3] Update lib/rdoc/code_object/top_level.rb Co-authored-by: Sutou Kouhei --- lib/rdoc/code_object/top_level.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rdoc/code_object/top_level.rb b/lib/rdoc/code_object/top_level.rb index 2e3aa528c9..c1c003130e 100644 --- a/lib/rdoc/code_object/top_level.rb +++ b/lib/rdoc/code_object/top_level.rb @@ -52,7 +52,7 @@ def initialize(absolute_name, relative_name = absolute_name) if relative_name @base_name = File.basename(relative_name) - @page_name = @base_name.sub(/\.(rb|rdoc|txt|md)$/i, '') + @page_name = @base_name.sub(/\.(rb|rdoc|txt|md)\z/i, '') else @base_name = nil @page_name = nil