c33a50dce5c0a5de6ebae0d7ac19bf398d93e038
   1require 'asciidoctor'
   2require 'asciidoctor/extensions'
   3
   4module Git
   5  module Documentation
   6    class LinkGitProcessor < Asciidoctor::Extensions::InlineMacroProcessor
   7      use_dsl
   8
   9      named :chrome
  10
  11      def process(parent, target, attrs)
  12        if parent.document.basebackend? 'html'
  13          generate_html(parent, target, attrs)
  14        elsif parent.document.basebackend? 'docbook'
  15          generate_docbook(parent, target, attrs)
  16        end
  17      end
  18
  19      private
  20
  21      def generate_html(parent, target, attrs)
  22        section = attrs.has_key?(1) ? "(#{attrs[1]})" : ''
  23        prefix = parent.document.attr('git-relative-html-prefix') || ''
  24        %(<a href="#{prefix}#{target}.html">#{target}#{section}</a>\n)
  25      end
  26
  27      def generate_docbook(parent, target, attrs)
  28        %(<citerefentry>
  29<refentrytitle>#{target}</refentrytitle><manvolnum>#{attrs[1]}</manvolnum>
  30</citerefentry>
  31)
  32      end
  33    end
  34  end
  35end
  36
  37Asciidoctor::Extensions.register do
  38  inline_macro Git::Documentation::LinkGitProcessor, :linkgit
  39end