lib/yard-api/verifier.rb in yard-api-0.3.0 vs lib/yard-api/verifier.rb in yard-api-0.3.1

- old
+ new

@@ -1,21 +1,22 @@ module YARD module APIPlugin class Verifier < ::YARD::Verifier def initialize(verbose=false) @verbose = verbose + @routes = {} super() end def run(list) relevant = list.select { |o| relevant_object?(o) } if @verbose && relevant.any? - log "#{relevant.length}/#{list.length} objects are relevant:" + logger.debug "#{relevant.length}/#{list.length} objects are relevant:" relevant.each do |object| - log "\t- #{object.path}" + logger.debug "\t- #{object.path}" end end relevant end @@ -24,24 +25,34 @@ case object.type when :root, :module, :constant false when :api true - when :method, :class - return false if object.tags('internal').any? + when :method + return false if object.has_tag?(:internal) || !object.has_tag?(:API) + routes = @routes[object.object_id] + routes ||= begin + @routes[object.object_id] = YARD::Templates::Helpers::RouteHelper.routes_for_yard_object(object) + end - object.tags('API').any?.tap do |is_api| - if @verbose && !is_api - log "Resource #{object} will be ignored as it contains no @API tag." - end + if routes.empty? + logger.warn ( + "API Endpoint #{object.path}# has no routes defined " + + "ib routes.rb and will be ignored." + ) end + + routes.any? + when :class + return false if object.has_tag?(:internal) || !object.has_tag?(:API) + true else object.parent.nil? && relevant_object?(object.parent) end end - def log(*args) - ::YARD::APIPlugin.log(*args) + def logger + ::YARD::APIPlugin.logger end end end end