diff options
author | Stan Lo <[email protected]> | 2024-07-02 11:14:56 +0100 |
---|---|---|
committer | git <[email protected]> | 2024-07-02 10:15:00 +0000 |
commit | d7af8afe1b85b8de04cd77c673b0f6ef3f3627fa (patch) | |
tree | 84776ba8b6a7ef72ca5520cf900aa9e5f991ad89 /lib/rdoc/code_object/single_class.rb | |
parent | 1ab31eb4294132a0fb3282755843575da87f0918 (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.rb | 30 |
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 |