Module: YARD::Handlers::Ruby::MacroHandlerMethods
- Includes:
- CodeObjects, Parser
- Included in:
- Legacy::MacroHandler, MacroHandler
- Defined in:
- lib/yard/handlers/ruby/macro_handler_methods.rb
Constant Summary
Constants included from CodeObjects
BUILTIN_ALL, BUILTIN_CLASSES, BUILTIN_EXCEPTIONS, BUILTIN_EXCEPTIONS_HASH, BUILTIN_MODULES, CONSTANTMATCH, CSEP, CSEPQ, ISEP, ISEPQ, METHODMATCH, METHODNAMEMATCH, NAMESPACEMATCH, NSEP, NSEPQ
Instance Method Summary (collapse)
- - (Object) create_attribute_data(object)
- - (Object) expand_macro(object, macro)
- - (Object) expanded_macro_or_docstring
- - (Object) find_or_create_macro(docstring)
- - (Object) method_name
- - (Object) method_signature
- - (Object) sanitize_scope
- - (Object) sanitize_visibility
Instance Method Details
- (Object) create_attribute_data(object)
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/yard/handlers/ruby/macro_handler_methods.rb', line 48 def create_attribute_data(object) return unless object.docstring.tag(:attribute) ensure_loaded!(namespace) clean_name = object.name.to_s.sub(/=$/, '') namespace.attributes[object.scope][clean_name] ||= SymbolHash[:read => nil, :write => nil] if attribute_readable? namespace.attributes[object.scope][clean_name][:read] = object end if attribute_writable? if object.name.to_s[-1,1] == '=' writer = object else writer = MethodObject.new(namespace, object.name.to_s + '=', object.scope) register(writer) writer.signature = "def #{object.name}=(value)" writer.visibility = object.visibility writer.dynamic = true end namespace.attributes[object.scope][clean_name][:write] = writer end end |
- (Object) expand_macro(object, macro)
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/yard/handlers/ruby/macro_handler_methods.rb', line 27 def (object, macro) if @docstring object.docstring = @docstring object.docstring..each do |tag| tag.object = object if tag.respond_to?(:object=) end else super(object, macro) end end |
- (Object) expanded_macro_or_docstring
20 21 22 23 24 25 |
# File 'lib/yard/handlers/ruby/macro_handler_methods.rb', line 20 def return @docstring unless @macro all_params = ([caller_method] + call_params).compact data = MacroObject.apply_macro(@macro, @docstring, all_params, statement.source) Docstring.new(data) end |
- (Object) find_or_create_macro(docstring)
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/yard/handlers/ruby/macro_handler_methods.rb', line 8 def find_or_create_macro(docstring) return @macro if @macro return if @macro = super(docstring) # Look for implicit macros (globals.__attached_macros[caller_method] || []).each do |macro| namespace.inheritance_tree.each do |obj| break(@macro = macro) if obj == macro.method_object.namespace end end end |
- (Object) method_name
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/yard/handlers/ruby/macro_handler_methods.rb', line 70 def method_name name = nil [:method, :attribute, :overload].each do |tag_name| if tag = @docstring.tag(tag_name) name = tag.send(tag_name == :attribute ? :text : :name).to_s if tag_name == :method && name =~ /\(|\s/ overload = Tags::OverloadTag.new(:overload, name) @docstring.add_tag(overload) end break end end name = nil if name =~ /\A\s*\Z/ name ||= call_params.first return unless name if name =~ /\A\s*([^\(; \t]+)/ name = $1 end if @docstring.tag(:attribute) && !attribute_readable? name = name + '=' end name end |
- (Object) method_signature
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/yard/handlers/ruby/macro_handler_methods.rb', line 94 def method_signature if @docstring.tag(:method) name = @docstring.tag(:method).name elsif @docstring.tag(:overload) name = @docstring.tag(:overload).signature elsif @docstring.tag(:attribute) name = @docstring.tag(:attribute).text name += '=(value)' if !attribute_readable? else name = method_name end name = nil if name =~ /\A\s*\Z/ name ||= call_params.first name =~ /^def\b/ ? name : "def #{name}" end |
- (Object) sanitize_scope
38 39 40 41 |
# File 'lib/yard/handlers/ruby/macro_handler_methods.rb', line 38 def sanitize_scope tmp_scope = @docstring.tag(:scope) ? @docstring.tag(:scope).text : '' %w(class instance).include?(tmp_scope) ? tmp_scope.to_sym : scope end |
- (Object) sanitize_visibility
43 44 45 46 |
# File 'lib/yard/handlers/ruby/macro_handler_methods.rb', line 43 def sanitize_visibility vis = @docstring.tag(:visibility) ? @docstring.tag(:visibility).text : '' %w(public protected private).include?(vis) ? vis.to_sym : visibility end |