def resolve_links(text)
code_tags = 0
text.gsub(/<(\/)?(pre|code)|(\s|>|^)\{(\S+?)(?:\s(.*?\S))?\}(?=[\W<]|.+<\/|$)/) do |str|
tag = $2
closed = $1
if tag
code_tags += (closed ? -1 : 1)
next str
end
next str unless code_tags == 0
sp, name = $3, $4
title = $5 || name
if name.include?("://")
sp + link_url(name, title, :target => '_parent')
elsif name =~ /^file:(\S+?)(?:#(\S+))?$/
sp + link_file($1, title == name ? $1 : title, $2)
else
obj = Registry.resolve(current_object, name, true, true)
if obj.is_a?(CodeObjects::Proxy)
match = text[/(.{0,20}\{.*?#{Regexp.quote name}.*?\}.{0,20})/, 1]
log.warn "In file `#{current_object.file}':#{current_object.line}: Cannot resolve link to #{obj.path} from text" + (match ? ":" : ".")
log.warn '...' + match.gsub(/\n/,"\n\t") + '...' if match
end
"#{sp}<tt>" + linkify(obj, title) + "</tt>"
end
end
end