Sha256: 556a9e1c0f83f4eea2ed7d0d3e0bd28ed14fd02b4b9f5e839f0fcd4381fc803e

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

module YARD
  module Handlers
    module Ruby
      # Handles a macro (dsl-style method)
      class MacroHandler < Base
        include CodeObjects
        include MacroHandlerMethods
        handles method_call
        namespace_only
        
        IGNORE_METHODS = Hash[*%w(alias alias_method autoload attr attr_accessor 
          attr_reader attr_writer extend include public private protected 
          private_constant).map {|n| [n, true] }.flatten]
        
        process do
          return if namespace == Registry.root
          globals.__attached_macros ||= {}
          if !globals.__attached_macros[caller_method]
            return if IGNORE_METHODS[caller_method]
            return if !statement.comments || statement.comments.empty?
          end
          
          @macro, @docstring = nil, Docstring.new(statement.comments)
          find_or_create_macro(@docstring)
          return if !@macro && !statement.comments_hash_flag && @docstring.tags.size == 0
          @docstring = expanded_macro_or_docstring
          name = method_name
          raise UndocumentableError, "method, missing name" if name.nil? || name.empty?
          tmp_scope = sanitize_scope
          tmp_vis = sanitize_visibility
          object = MethodObject.new(namespace, name, tmp_scope)
          register(object)
          object.visibility = tmp_vis
          object.dynamic = true
          object.signature = method_signature
          create_attribute_data(object)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
yard-0.7.1 lib/yard/handlers/ruby/macro_handler.rb
yard-0.7.0 lib/yard/handlers/ruby/macro_handler.rb