Class: YARD::Handlers::Ruby::MethodHandler
Overview
Handles a method definition
Constant Summary
Constant Summary
Constants included from CodeObjects
CodeObjects::BUILTIN_ALL, CodeObjects::BUILTIN_CLASSES, CodeObjects::BUILTIN_EXCEPTIONS, CodeObjects::BUILTIN_EXCEPTIONS_HASH, CodeObjects::BUILTIN_MODULES, CodeObjects::CONSTANTMATCH, CodeObjects::CSEP, CodeObjects::CSEPQ, CodeObjects::ISEP, CodeObjects::ISEPQ, CodeObjects::METHODMATCH, CodeObjects::METHODNAMEMATCH, CodeObjects::NAMESPACEMATCH, CodeObjects::NSEP, CodeObjects::NSEPQ
Instance Attribute Summary (collapse)
-
- (Object) extra_state
inherited
from Base
readonly
Returns the value of attribute extra_state.
-
- (Object) globals
inherited
from Base
readonly
Returns the value of attribute globals.
-
- (Object) namespace
inherited
from Base
Returns the value of attribute namespace.
-
- (Object) owner
inherited
from Base
Returns the value of attribute owner.
-
- (Processor) parser
inherited
from Base
readonly
The processor object that manages all global state during handling.
-
- (Object) scope
inherited
from Base
Returns the value of attribute scope.
-
- (Object) statement
inherited
from Base
readonly
The statement object currently being processed.
-
- (Object) visibility
inherited
from Base
Returns the value of attribute visibility.
Instance Method Summary (collapse)
- - (Object) format_args
- - (Object) method_signature
-
- (void) process
Main processing callback.
Methods included from Parser::Ruby
Constructor Details
This class inherits a constructor from YARD::Handlers::Base
Instance Attribute Details
- (Object) extra_state (readonly) Originally defined in class Base
Returns the value of attribute extra_state
- (Object) globals (readonly) Originally defined in class Base
Returns the value of attribute globals
- (Object) namespace Originally defined in class Base
Returns the value of attribute namespace
- (Object) owner Originally defined in class Base
Returns the value of attribute owner
- (Processor) parser (readonly) Originally defined in class Base
Returns the processor object that manages all global state during handling.
- (Object) scope Originally defined in class Base
Returns the value of attribute scope
- (Object) statement (readonly) Originally defined in class Base
Returns the statement object currently being processed. Usually refers to one semantic language statement, though the strict definition depends on the parser used.
- (Object) visibility Originally defined in class Base
Returns the value of attribute visibility
Instance Method Details
- (Object) format_args
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/yard/handlers/ruby/method_handler.rb', line 72 def format_args args = statement.parameters params = [] if args.unnamed_required_params params += args.unnamed_required_params.map { |a| [a.source, nil] } end if args.unnamed_optional_params params += args.unnamed_optional_params.map do |a| [a[0].source, a[1].source] end end if args.splat_param params << ['*' + args.splat_param.source, nil] end if args.unnamed_end_params params += args.unnamed_end_params.map { |a| [a.source, nil] } end if args.named_params params += args.named_params.map do |a| [a[0].source, a[1] ? a[1].source : nil] end end if args.double_splat_param params << ['**' + args.double_splat_param.source, nil] end if args.block_param params << ['&' + args.block_param.source, nil] end params end |
- (Object) method_signature
112 113 114 115 116 117 118 119 |
# File 'lib/yard/handlers/ruby/method_handler.rb', line 112 def method_signature method_name = statement.method_name(true) if statement.parameters.any? {|e| e } "def #{method_name}(#{statement.parameters.source})" else "def #{method_name}" end end |
- (void) process
This method returns an undefined value.
Main processing callback
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/yard/handlers/ruby/method_handler.rb', line 5 process do meth = statement.method_name(true).to_s args = format_args blk = statement.block nobj = namespace mscope = scope if statement.type == :defs if statement[0][0].type == :ident raise YARD::Parser::UndocumentableError, 'method defined on object instance' end nobj = P(namespace, statement[0].source) if statement[0][0].type == :const mscope = :class end nobj = P(namespace, nobj.value) while nobj.type == :constant obj = register MethodObject.new(nobj, meth, mscope) do |o| o.signature = method_signature o.explicit = true o.parameters = args end # delete any aliases referencing old method nobj.aliases.each do |aobj, name| next unless name == obj.name nobj.aliases.delete(aobj) end if nobj.is_a?(NamespaceObject) if obj.constructor? unless obj.has_tag?(:return) obj.add_tag(YARD::Tags::Tag.new(:return, "a new instance of #{namespace.name}", namespace.name.to_s)) end elsif mscope == :class && obj.docstring.blank? && %w(inherited included extended method_added method_removed method_undefined).include?(meth) obj.add_tag(YARD::Tags::Tag.new(:private, nil)) elsif meth.to_s =~ /\?$/ if obj.tag(:return) && (obj.tag(:return).types || []).empty? obj.tag(:return).types = ['Boolean'] elsif obj.tag(:return).nil? unless obj.(:overload).any? {|overload| overload.tag(:return) } obj.add_tag(YARD::Tags::Tag.new(:return, "", "Boolean")) end end end if obj.has_tag?(:option) # create the options parameter if its missing obj.(:option).each do |option| expected_param = option.name unless obj.(:param).find {|x| x.name == expected_param } new_tag = YARD::Tags::Tag.new(:param, "a customizable set of options", "Hash", expected_param) obj.add_tag(new_tag) end end end if info = obj.attr_info if meth.to_s =~ /=$/ # writer info[:write] = obj if info[:read] else info[:read] = obj if info[:write] end end parse_block(blk, :owner => obj) # mainly for yield/exceptions end |