module YARD::Server::DocServerHelper

A module that is mixed into {Templates::Template} in order to customize certain template methods.

Public Instance Methods

abs_url(*path_components) click to toggle source

@param path_components [Array<String>] components of a URL @return [String] the absolute path from any mounted base URI.

# File lib/yard/server/doc_server_helper.rb, line 61
def abs_url(*path_components)
  File.join(router.request.script_name, *path_components)
end
base_path(path) click to toggle source

@example The base path for a library ‘foo’

base_path('docs') # => 'docs/foo'

@param [String] path the path prefix for a base path URI @return [String] the base URI for a library with an extra path prefix

# File lib/yard/server/doc_server_helper.rb, line 69
def base_path(path)
  libname = router.request.version_supplied ? @library.to_s : @library.name
  path + (@single_library ? '' : "/#{libname}")
end
mtime(file) click to toggle source

@return [String] a timestamp for a given file

# File lib/yard/server/doc_server_helper.rb, line 78
def mtime(file)
  file = YARD::Server::Commands::StaticFileHelpers.find_file(@adapter, file)
  file ? File.mtime(file).to_i : nil
end
mtime_url(file) click to toggle source

@return [String] a URL for a file with a timestamp

# File lib/yard/server/doc_server_helper.rb, line 84
def mtime_url(file)
  url = url_for(file)
  time = mtime(file)
  url + (time ? "?#{time}" : "")
end
router() click to toggle source

@return [Router] convenience method for accessing the router

# File lib/yard/server/doc_server_helper.rb, line 75
def router; @adapter.router end
url_for(obj, anchor = nil, relative = false) click to toggle source

Modifies {Templates::Helpers::HtmlHelper#url_for} to return a URL instead of a disk location. @param (see Templates::Helpers::HtmlHelper#url_for) @return (see Templates::Helpers::HtmlHelper#url_for)

Calls superclass method
# File lib/yard/server/doc_server_helper.rb, line 11
def url_for(obj, anchor = nil, relative = false) # rubocop:disable Lint/UnusedMethodArgument
  return '' if obj.nil?
  return url_for_index if obj == '_index.html'
  return abs_url(base_path(router.static_prefix), obj) if String === obj
  url = super(obj, anchor, false)
  return unless url
  abs_url(base_path(router.docs_prefix), url)
end
url_for_file(filename, anchor = nil) click to toggle source

Modifies {Templates::Helpers::HtmlHelper#url_for_file} to return a URL instead of a disk location. @param (see Templates::Helpers::HtmlHelper#url_for_file) @return (see Templates::Helpers::HtmlHelper#url_for_file)

# File lib/yard/server/doc_server_helper.rb, line 24
def url_for_file(filename, anchor = nil)
  if filename.is_a?(CodeObjects::ExtraFileObject)
    filename = filename.filename
  end
  fname = filename.sub(%r{^#{@library.source_path.to_s}/}, '')
  fname += "##{anchor}" if anchor && !anchor.empty?
  abs_url(base_path(router.docs_prefix), 'file', fname)
end
url_for_frameset() click to toggle source

Returns the frames URL for the page @return (see Templates::Helpers::HtmlHelper#url_for_frameset)

# File lib/yard/server/doc_server_helper.rb, line 43
def url_for_frameset
  options.file ? url_for_file(options.file) : url_for(object)
end
url_for_index() click to toggle source

Returns the URL for the alphabetic index page @return (see Templates::Helpers::HtmlHelper#url_for_index)

# File lib/yard/server/doc_server_helper.rb, line 55
def url_for_index
  abs_url(base_path(router.docs_prefix), 'index')
end
url_for_list(type) click to toggle source

Modifies {Templates::Helpers::HtmlHelper#url_for_list} to return a URL based on the list prefix instead of a HTML filename. @param (see Templates::Helpers::HtmlHelper#url_for_list) @return (see Templates::Helpers::HtmlHelper#url_for_list)

# File lib/yard/server/doc_server_helper.rb, line 37
def url_for_list(type)
  abs_url(base_path(router.list_prefix), type.to_s)
end
url_for_main() click to toggle source

Returns the main URL, first checking a readme and then linking to the index @return (see Templates::Helpers::HtmlHelper#url_for_main)

# File lib/yard/server/doc_server_helper.rb, line 49
def url_for_main
  options.readme ? url_for_file(options.readme) : url_for_index
end