|  | require 'asciidoctor' | 
|  | require 'asciidoctor/extensions' | 
|  |  | 
|  | module Perf | 
|  | module Documentation | 
|  | class LinkPerfProcessor < Asciidoctor::Extensions::InlineMacroProcessor | 
|  | use_dsl | 
|  |  | 
|  | named :chrome | 
|  |  | 
|  | def process(parent, target, attrs) | 
|  | if parent.document.basebackend? 'html' | 
|  | %(<a href="#{target}.html">#{target}(#{attrs[1]})</a>\n) | 
|  | elsif parent.document.basebackend? 'manpage' | 
|  | "#{target}(#{attrs[1]})" | 
|  | elsif parent.document.basebackend? 'docbook' | 
|  | "<citerefentry>\n" \ | 
|  | "<refentrytitle>#{target}</refentrytitle>" \ | 
|  | "<manvolnum>#{attrs[1]}</manvolnum>\n" \ | 
|  | "</citerefentry>\n" | 
|  | end | 
|  | end | 
|  | end | 
|  | end | 
|  | end | 
|  |  | 
|  | Asciidoctor::Extensions.register do | 
|  | inline_macro Perf::Documentation::LinkPerfProcessor, :linkperf | 
|  | end |