summaryrefslogtreecommitdiff
path: root/lib/rdoc/code_object/single_class.rb
diff options
context:
space:
mode:
authorStan Lo <[email protected]>2024-07-02 11:14:56 +0100
committergit <[email protected]>2024-07-02 10:15:00 +0000
commitd7af8afe1b85b8de04cd77c673b0f6ef3f3627fa (patch)
tree84776ba8b6a7ef72ca5520cf900aa9e5f991ad89 /lib/rdoc/code_object/single_class.rb
parent1ab31eb4294132a0fb3282755843575da87f0918 (diff)
[ruby/rdoc] Group code object files into the same directory
(https://github.com/ruby/rdoc/pull/1114) It's hard to distinguish code object classes by their file names alone. And given that we have 18 such classes, it'd make the codebase a lot easier to understand if we grouped them into a single directory. Given that these classes are all autoloaded in `lib/rdoc.rb` instead of required individually, this change should have minimum impact on projects using RDoc as they generally just require `rdoc`, not individual files. An example is Rails' `sdoc`: https://github.com/rails/sdoc/blob/main/lib/sdoc/rdoc_monkey_patches.rb https://github.com/ruby/rdoc/commit/4211292ffe
Diffstat (limited to 'lib/rdoc/code_object/single_class.rb')
-rw-r--r--lib/rdoc/code_object/single_class.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/rdoc/code_object/single_class.rb b/lib/rdoc/code_object/single_class.rb
new file mode 100644
index 0000000000..dd16529648
--- /dev/null
+++ b/lib/rdoc/code_object/single_class.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+##
+# A singleton class
+
+class RDoc::SingleClass < RDoc::ClassModule
+
+ ##
+ # Adds the superclass to the included modules.
+
+ def ancestors
+ superclass ? super + [superclass] : super
+ end
+
+ def aref_prefix # :nodoc:
+ 'sclass'
+ end
+
+ ##
+ # The definition of this singleton class, <tt>class << MyClassName</tt>
+
+ def definition
+ "class << #{full_name}"
+ end
+
+ def pretty_print q # :nodoc:
+ q.group 2, "[class << #{full_name}", "]" do
+ next
+ end
+ end
+end