Class: Yoda::YARDExtensions::SigDirective

Inherits:
YARD::Tags::Directive
  • Object
show all
Defined in:
lib/yoda/yard_extensions/sig_directive.rb

Instance Method Summary collapse

Instance Method Details

#after_parseObject



6
7
8
9
# File 'lib/yoda/yard_extensions/sig_directive.rb', line 6

def after_parse
  return unless handler && handler.namespace
  create_object
end

#callObject



4
# File 'lib/yoda/yard_extensions/sig_directive.rb', line 4

def call; end

#create_objectObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/yoda/yard_extensions/sig_directive.rb', line 11

def create_object
  method_name = name
  scope = parser.state.scope || handler.scope
  visibility = parser.state.visibility || handler.visibility

  method_object = YARD::CodeObjects::MethodObject.new(handler.namespace, method_name, scope)
  method_object.add_tag(TypeTag.new(:type, type_text))

  unless method_object.files
    # Already registered object
    method_object.signature = "def #{method_name}"
    method_object.dynamic = true
    handler.register_file_info(method_object)
    handler.register_source(method_object)
    handler.register_visibility(method_object, visibility)
    handler.register_group(method_object)
    handler.register_module_function(method_object)
  end
end

#nameObject



31
32
33
# File 'lib/yoda/yard_extensions/sig_directive.rb', line 31

def name
  tag.text.split(' ').first
end

#type_textObject



35
36
37
# File 'lib/yoda/yard_extensions/sig_directive.rb', line 35

def type_text
  tag.text.gsub(/\A\w+\s+/, '')
end