Class: YARD::Handlers::Ruby::ModuleFunctionHandler
- Includes:
- DecoratorHandlerMethods
- Defined in:
- lib/yard/handlers/ruby/module_function_handler.rb
Overview
Handles module_function calls to turn methods into public class methods. Also creates a private instance copy of the method.
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::CONSTANTSTART, CodeObjects::CSEP, CodeObjects::CSEPQ, CodeObjects::ISEP, CodeObjects::ISEPQ, CodeObjects::METHODMATCH, CodeObjects::METHODNAMEMATCH, CodeObjects::NAMESPACEMATCH, CodeObjects::NSEP, CodeObjects::NSEPQ, CodeObjects::PROXY_MATCH
Instance Attribute Summary
Attributes inherited from Base
#extra_state, #globals, #namespace, #owner, #parser, #scope, #statement, #visibility
Instance Method Summary collapse
- #make_module_function(instance_method, namespace) ⇒ Object
-
#process ⇒ void
Main processing callback.
Methods included from DecoratorHandlerMethods
Methods inherited from Base
#call_params, #caller_method, handles?, meta_type, method_call, #parse_block
Methods included from Parser::Ruby
Methods inherited from Base
#abort!, #call_params, #caller_method, clear_subclasses, #ensure_loaded!, handlers, handles, handles?, in_file, inherited, #initialize, matches_file?, namespace_only, namespace_only?, #parse_block, process, #push_state, #register, #register_docstring, #register_dynamic, #register_ensure_loaded, #register_file_info, #register_group, #register_module_function, #register_source, #register_transitive_tags, #register_visibility, subclasses
Methods included from CodeObjects::NamespaceMapper
#clear_separators, #default_separator, on_invalidate, #register_separator, #separators, #separators_for_type, #separators_match, #types_for_separator, #unregister_separator_by_type
Constructor Details
This class inherits a constructor from YARD::Handlers::Base
Instance Method Details
#make_module_function(instance_method, namespace) ⇒ Object
34 35 36 37 38 |
# File 'lib/yard/handlers/ruby/module_function_handler.rb', line 34 def make_module_function(instance_method, namespace) class_method = MethodObject.new(namespace, instance_method.name, :module) instance_method.copy_to(class_method) class_method.visibility = :public end |
#process ⇒ void
This method returns an undefined value.
Main processing callback
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/yard/handlers/ruby/module_function_handler.rb', line 10 process do return if statement.jump(:ident) == statement case statement.type when :var_ref, :vcall self.scope = :module when :fcall, :command statement[1].traverse do |node| case node.type when :def process_decorator do |instance_method| make_module_function(instance_method, namespace) end break when :symbol; name = node.first.source when :string_content; name = node.source else next end instance_method = MethodObject.new(namespace, name) make_module_function(instance_method, namespace) end end end |