Class: RuboCop::Cop::Cask::Url

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector, Forwardable
Includes:
OnUrlStanza
Defined in:
rubocops/cask/url.rb

Overview

This cop checks that a cask’s url stanza is formatted correctly.

Examples:

# bad
url "https://example.com/foo.dmg",
  verified: "https://example.com"

# good
url "https://example.com/foo.dmg",
  verified: "example.com"

Direct Known Subclasses

UrlLegacyCommaSeparators

Instance Method Summary collapse

Methods included from OnUrlStanza

#on_cask

Methods included from CaskHelp

#on_block, #on_cask

Instance Method Details

#on_url_stanza(stanza) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'rubocops/cask/url.rb', line 24

def on_url_stanza(stanza)
  return if stanza.stanza_node.block_type?

  hash_node = stanza.stanza_node.last_argument
  return unless hash_node.hash_type?

  hash_node.each_pair do |key_node, value_node|
    next unless key_node.source == "verified"
    next unless value_node.str_type?
    next unless value_node.source.start_with?(%r{^"https?://})

    add_offense(
      value_node.source_range,
      message: "Verified URL parameter value should not start with https:// or http://.",
    ) do |corrector|
      corrector.replace(value_node.source_range, value_node.source.gsub(%r{^"https?://}, "\""))
    end
  end
end