12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/usr/bin/env ruby
- # https://cirosantilli.com/linux-kernel-module-cheat#asciidoctor-link-target-up-rb
- require 'asciidoctor'
- require 'asciidoctor/extensions'
- class LinkTargetUp < Asciidoctor::Extensions::InlineMacroProcessor
- use_dsl
- named :link
- ExternalLinkRegex = /^https?:\/\//
- def target_base
- # Return an absolute path here because you will
- # often want your out/ to be a symlink to your hard
- # disk, and doing just '..' in that case breaks.
- #
- # The downside is that you can't move the repo around
- # and still have the HTML work, but other Buildroot things
- # will likely break anyways in that case, so this is
- # the least of worries.
- File.expand_path('..', __dir__)
- end
- def process parent, target, attrs
- text = attrs[1]
- if text.nil? || text.empty?
- text = target
- end
- if !ExternalLinkRegex.match?(target)
- target = File.join(target_base, target)
- end
- create_anchor parent, text, type: :link, target: target
- end
- end
- Asciidoctor::Extensions.register do
- inline_macro LinkTargetUp
- end
|