Class: RBS::Annotate::RDocSource
- Inherits:
-
Object
- Object
- RBS::Annotate::RDocSource
- Defined in:
- lib/rbs/annotate/rdoc_source.rb
Instance Attribute Summary collapse
-
#extra_dirs ⇒ Object
readonly
Returns the value of attribute extra_dirs.
-
#stores ⇒ Object
readonly
Returns the value of attribute stores.
-
#with_gems_dir ⇒ Object
Returns the value of attribute with_gems_dir.
-
#with_home_dir ⇒ Object
Returns the value of attribute with_home_dir.
-
#with_site_dir ⇒ Object
Returns the value of attribute with_site_dir.
-
#with_system_dir ⇒ Object
Returns the value of attribute with_system_dir.
Instance Method Summary collapse
- #class_docs(typename) ⇒ Object
- #docs ⇒ Object
- #find_attribute(typename, name, singleton:) ⇒ Object
- #find_class(typename) ⇒ Object
- #find_const(const_name) ⇒ Object
- #find_method(typename, instance_method: nil, singleton_method: nil) ⇒ Object
-
#initialize ⇒ RDocSource
constructor
A new instance of RDocSource.
- #load ⇒ Object
Constructor Details
#initialize ⇒ RDocSource
Returns a new instance of RDocSource.
10 11 12 13 14 15 16 17 18 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 10 def initialize self.with_system_dir = true self.with_gems_dir = false self.with_site_dir = false self.with_home_dir = false @extra_dirs = [] @stores = [] end |
Instance Attribute Details
#extra_dirs ⇒ Object (readonly)
Returns the value of attribute extra_dirs.
6 7 8 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 6 def extra_dirs @extra_dirs end |
#stores ⇒ Object (readonly)
Returns the value of attribute stores.
8 9 10 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 8 def stores @stores end |
#with_gems_dir ⇒ Object
Returns the value of attribute with_gems_dir.
4 5 6 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 4 def with_gems_dir @with_gems_dir end |
#with_home_dir ⇒ Object
Returns the value of attribute with_home_dir.
4 5 6 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 4 def with_home_dir @with_home_dir end |
#with_site_dir ⇒ Object
Returns the value of attribute with_site_dir.
4 5 6 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 4 def with_site_dir @with_site_dir end |
#with_system_dir ⇒ Object
Returns the value of attribute with_system_dir.
4 5 6 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 4 def with_system_dir @with_system_dir end |
Instance Method Details
#class_docs(typename) ⇒ Object
53 54 55 56 57 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 53 def class_docs(typename) if classes = find_class(typename) classes.map {|klass| klass.comment } end end |
#docs ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 45 def docs if ds = yield unless ds.empty? ds.map(&:comment) end end end |
#find_attribute(typename, name, singleton:) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 106 def find_attribute(typename, name, singleton:) if klasss = find_class(typename) # @type var attrs: Array[RDoc::Attr] attrs = [] klasss.each do |kls| attrs.concat(kls.attributes.select {|attr| attr.singleton == singleton && attr.name == name.to_s }) end attrs unless attrs.empty? end end |
#find_class(typename) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 31 def find_class(typename) classes = [] @stores.each do |store| if klass = store.find_class_or_module(typename.relative!.to_s) classes << klass end end unless classes.empty? classes end end |
#find_const(const_name) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 59 def find_const(const_name) namespace = if const_name.namespace.empty? TypeName("::Object") else const_name.namespace.to_type_name end if classes = find_class(namespace) # @type var consts: Array[RDoc::Constant] consts = [] classes.each do |klass| if const = klass.constants.find {|c| c.name == const_name.name.to_s } consts << const end end unless consts.empty? consts end end end |
#find_method(typename, instance_method: nil, singleton_method: nil) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 83 def find_method(typename, instance_method: nil, singleton_method: nil) if classes = find_class(typename) # @type var methods: Array[RDoc::AnyMethod] methods = [] classes.each do |klass| klass.method_list.each do |method| if instance_method && !method.singleton && method.name == instance_method.to_s methods << method end if singleton_method && method.singleton && method.name == singleton_method.to_s methods << method end end end unless methods.empty? methods end end end |
#load ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/rbs/annotate/rdoc_source.rb', line 20 def load @stores.clear() RDoc::RI::Paths.each(with_system_dir, with_site_dir, with_home_dir, with_gems_dir ? :latest : false, *extra_dirs.map(&:to_s)) do |path, type| store = RDoc::Store.new(path, type) store.load_all @stores << store end end |