class Jekyll::Tags::Link

Public Class Methods

new(tag_name, relative_path, tokens) click to toggle source
Calls superclass method
# File lib/ngage/jekyll/tags/link.rb, line 12
def initialize(tag_name, relative_path, tokens)
  super

  @relative_path = relative_path.strip
end
tag_name() click to toggle source
# File lib/ngage/jekyll/tags/link.rb, line 7
def tag_name
  name.split("::").last.downcase
end

Public Instance Methods

render(context) click to toggle source
# File lib/ngage/jekyll/tags/link.rb, line 18
      def render(context)
        site = context.registers[:site]

        liquid = site.liquid_renderer.file("(jekyll:link)")
        relative_path = liquid.parse(@relative_path).render(context)

        site.each_site_file do |item|
          return item.url if item.relative_path == relative_path
          # This takes care of the case for static files that have a leading /
          return item.url if item.relative_path == "/#{relative_path}"
        end

        raise ArgumentError, <<~MSG
          Could not find document '#{relative_path}' in tag '#{self.class.tag_name}'.

          Make sure the document exists and the path is correct.
        MSG
      end