class YARD::RegistryResolver
def lookup_path_inherited(namespace, path, type)
def lookup_path_inherited(namespace, path, type) resolved = nil last_obj = namespace scopes = [] last_sep = nil pos = 0 if path =~ starts_with_separator_match last_sep = $1 path = $' end path.scan(split_on_separators_match).each do |part, sep| cur_obj = nil pos += part.length pos += sep.length parsed_end = pos == path.length if !last_obj || (!parsed_end && !last_obj.is_a?(CodeObjects::NamespaceObject)) break # can't continue end collect_namespaces(last_obj).each do |ns| next if ns.is_a?(CodeObjects::Proxy) found = nil search_seps = [] scopes.each do |scope| search_seps += separators_for_type(scope) end if search_seps.empty? search_seps = if ns.type == :root [""] elsif last_sep.nil? separators else [@default_sep] end end ([last_sep] | search_seps).compact.each do |search_sep| found = @registry.at(ns.path + search_sep.to_s + part) break if found end break cur_obj = found if found end last_sep = sep scopes = types_for_separator(sep) || [] last_obj = cur_obj resolved = cur_obj if parsed_end && cur_obj && (type.nil? || type == cur_obj.type) end resolved end