^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) require 'asciidoctor'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) require 'asciidoctor/extensions'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) module Perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) module Documentation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) class LinkPerfProcessor < Asciidoctor::Extensions::InlineMacroProcessor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) use_dsl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) named :chrome
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) def process(parent, target, attrs)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) if parent.document.basebackend? 'html'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) %(<a href="#{target}.html">#{target}(#{attrs[1]})</a>\n)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) elsif parent.document.basebackend? 'manpage'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) "#{target}(#{attrs[1]})"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) elsif parent.document.basebackend? 'docbook'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) "<citerefentry>\n" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) "<refentrytitle>#{target}</refentrytitle>" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) "<manvolnum>#{attrs[1]}</manvolnum>\n" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) "</citerefentry>\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) Asciidoctor::Extensions.register do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) inline_macro Perf::Documentation::LinkPerfProcessor, :linkperf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) end