class Scopedog::Directives::Base
@abstract
Attributes
abstract_class[RW]
Public Class Methods
abstract_class?()
click to toggle source
# File lib/scopedog/directives/base.rb, line 9 def abstract_class? defined?(@abstract_class) && @abstraact_class == true end
directive_name()
click to toggle source
# File lib/scopedog/directives/base.rb, line 19 def directive_name name.demodulize.underscore.gsub(/_directive$/, '') end
inherited(klass)
click to toggle source
# File lib/scopedog/directives/base.rb, line 13 def inherited(klass) return if klass.abstract_class? YARD::Tags::Library.define_directive klass.directive_name, :with_name, klass end
Public Instance Methods
call()
click to toggle source
@!override YARD::Tags::Directive#after_parse
# File lib/scopedog/directives/base.rb, line 27 def call; end
Protected Instance Methods
add_method!(name = nil, tags: [])
click to toggle source
# File lib/scopedog/directives/base.rb, line 31 def add_method!(name = nil, tags: []) name = handler.call_params.first if name.nil? obj = create_method_object(name) visibility = parser.state.visibility || handler.visibility handler.register_file_info(obj) handler.register_source(obj) handler.register_visibility(obj, visibility) handler.register_group(obj) handler.register_module_function(obj) old_obj = parser.object parser.object = obj parser.post_process parser.object = old_obj obj end
create_method_object(name)
click to toggle source
@return [YARD::CodeObjects::MethodObject]
# File lib/scopedog/directives/base.rb, line 51 def create_method_object(name) scope = parser.state.scope || handler.scope ns = YARD::CodeObjects::NamespaceObject === object ? object : handler.namespace signature = "def #{tag.name}" YARD::CodeObjects::MethodObject.new(ns, name, scope).tap do |obj| obj.signature = signature obj.parameters = YARD::Tags::OverloadTag.new(:overload, signature).parameters obj.docstring = YARD::Docstring.new!(parser.text, parser.tags, obj, parser.raw_text, parser.reference) end end