class RuboCop::Schema::DocumentLoader

Constants

CORRECTIONS
DEFAULTS_URL_TEMPLATE
DOCS_URL_TEMPLATE

Public Class Methods

new(http_client) click to toggle source

@param [CachedHTTPClient] http_client

# File lib/rubocop/schema/document_loader.rb, line 20
def initialize(http_client)
  @http_client = http_client
  @docs        = {}
  @defaults    = {}
end

Public Instance Methods

defaults(spec) click to toggle source

@param [Spec] spec

# File lib/rubocop/schema/document_loader.rb, line 27
def defaults(spec)
  @defaults[spec] ||=
    YAML.safe_load @http_client.get(url_for_defaults(spec)), [Regexp, Symbol]
end
doc(spec, department = nil) click to toggle source

@param [Spec] spec @param [String] department @return [Asciidoctor::Document]

# File lib/rubocop/schema/document_loader.rb, line 35
def doc(spec, department = nil)
  @docs[[spec, department]] ||=
    Asciidoctor.load @http_client.get url_for_doc(spec, department)
end

Private Instance Methods

correct_version(spec) click to toggle source
# File lib/rubocop/schema/document_loader.rb, line 50
def correct_version(spec)
  CORRECTIONS.dig(spec.name, spec.version) || "v#{spec.version}"
end
url_for_defaults(spec) click to toggle source
# File lib/rubocop/schema/document_loader.rb, line 46
def url_for_defaults(spec)
  format DEFAULTS_URL_TEMPLATE, spec.name, correct_version(spec)
end
url_for_doc(spec, department) click to toggle source
# File lib/rubocop/schema/document_loader.rb, line 42
def url_for_doc(spec, department)
  format DOCS_URL_TEMPLATE, spec.name, correct_version(spec), department && "_#{department.to_s.downcase}"
end