class MarkdownRubyDocumentation::Summary
Attributes
erb_methods_class[R]
subject[R]
Public Class Methods
new(subject:, erb_methods_class:)
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 5 def initialize(subject:, erb_methods_class:) @subject = subject @erb_methods_class = erb_methods_class end
Public Instance Methods
summary()
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 14 def summary "Descendants: #{descendants_links.join(", ")}" if descendants.present? end
title()
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 10 def title [format_class(subject), *ancestors_links].join(" < ") end
Private Instance Methods
ancestors()
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 36 def ancestors subject.ancestors.select do |klass| klass.is_a?(Class) && ![BasicObject, Object, subject].include?(klass) end.sort_by(&:name) end
ancestors_links()
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 20 def ancestors_links ancestors.map(&method(:create_link)) end
create_link(klass)
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 42 def create_link(klass) erb_methods_class.link_to_markdown(klass.to_s, title: format_class(klass)) end
descendants()
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 28 def descendants @descendants ||= begin ObjectSpace.each_object(Class).select do |klass| klass.try!(:name) && klass < subject && !(klass.name.to_s.include?("InstanceToClassMethods")) end.sort_by(&:name) end end
descendants_links()
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 24 def descendants_links descendants.map(&method(:create_link)) end
format_class(klass)
click to toggle source
# File lib/markdown_ruby_documentation/summary.rb, line 46 def format_class(klass) klass.name.titleize.split("/").last end