ruby-llvm/ruby-llvm

View on GitHub
yardlib/llvm.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class LLVMTagFactory < YARD::Tags::DefaultFactory
  def parse_tag(name, text)
    case name
    when :LLVMinst then inst_tag(text)
    when :LLVMpass then pass_tag(text)
    else
      super
    end
  end

  private

  def inst_tag(text)
    url = "http://llvm.org/docs/LangRef.html##{text}-instruction"
    markup = "<a href=\"#{url}\">LLVM Instruction: #{text}</a>"
    YARD::Tags::Tag.new("see", markup)
  end

  def pass_tag(text)
    url = "http://llvm.org/docs/Passes.html"
    markup = "<a href=\"#{url}\">LLVM Pass: #{text}</a>"
    YARD::Tags::Tag.new("see", markup)
  end
end

YARD::Tags::Library.define_tag "Instruction", :LLVMinst
YARD::Tags::Library.define_tag "Pass", :LLVMpass
YARD::Tags::Library.default_factory = LLVMTagFactory