require 'asciidoctor'
require 'asciidoctor/extensions'
module Git
  module Documentation
    class LinkGitProcessor < Asciidoctor::Extensions::InlineMacroProcessor
      use_dsl
      named :chrome
      def process(parent, target, attrs)
        prefix = parent.document.attr('git-relative-html-prefix')
        if parent.document.doctype == 'book'
          "" \
          "#{target}(#{attrs[1]})"
        elsif parent.document.basebackend? 'html'
          %(#{target}(#{attrs[1]}))
        elsif parent.document.basebackend? 'docbook'
          "\n" \
            "#{target}" \
            "#{attrs[1]}\n" \
          ""
        end
      end
    end
    class DocumentPostProcessor < Asciidoctor::Extensions::Postprocessor
      def process document, output
        if document.basebackend? 'docbook'
          mansource = document.attributes['mansource']
          manversion = document.attributes['manversion']
          manmanual = document.attributes['manmanual']
          new_tags = "" \
            "#{mansource}\n" \
            "#{manversion}\n" \
            "#{manmanual}\n"
          output = output.sub(/<\/refmeta>/, new_tags + "")
        end
        output
      end
    end
  end
end
Asciidoctor::Extensions.register do
  inline_macro Git::Documentation::LinkGitProcessor, :linkgit
  postprocessor Git::Documentation::DocumentPostProcessor
end