rubocops/livecheck: use rubocop v1 API
This commit is contained in:
parent
a778dc3bdb
commit
986f5dac0d
@ -11,6 +11,8 @@ module RuboCop
|
|||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
class LivecheckSkip < FormulaCop
|
class LivecheckSkip < FormulaCop
|
||||||
|
extend AutoCorrector
|
||||||
|
|
||||||
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
||||||
livecheck_node = find_block(body_node, :livecheck)
|
livecheck_node = find_block(body_node, :livecheck)
|
||||||
return if livecheck_node.blank?
|
return if livecheck_node.blank?
|
||||||
@ -21,16 +23,12 @@ module RuboCop
|
|||||||
return if find_every_method_call_by_name(livecheck_node).length < 3
|
return if find_every_method_call_by_name(livecheck_node).length < 3
|
||||||
|
|
||||||
offending_node(livecheck_node)
|
offending_node(livecheck_node)
|
||||||
problem "Skipped formulae must not contain other livecheck information."
|
problem "Skipped formulae must not contain other livecheck information." do |corrector|
|
||||||
end
|
skip = find_every_method_call_by_name(livecheck_node, :skip).first
|
||||||
|
|
||||||
def autocorrect(node)
|
|
||||||
lambda do |corrector|
|
|
||||||
skip = find_every_method_call_by_name(node, :skip).first
|
|
||||||
skip = find_strings(skip).first
|
skip = find_strings(skip).first
|
||||||
skip = string_content(skip) if skip.present?
|
skip = string_content(skip) if skip.present?
|
||||||
corrector.replace(
|
corrector.replace(
|
||||||
node.source_range,
|
livecheck_node.source_range,
|
||||||
<<~EOS.strip,
|
<<~EOS.strip,
|
||||||
livecheck do
|
livecheck do
|
||||||
skip#{" \"#{skip}\"" if skip.present?}
|
skip#{" \"#{skip}\"" if skip.present?}
|
||||||
@ -65,7 +63,7 @@ module RuboCop
|
|||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
class LivecheckUrlSymbol < FormulaCop
|
class LivecheckUrlSymbol < FormulaCop
|
||||||
@offense = nil
|
extend AutoCorrector
|
||||||
|
|
||||||
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
||||||
livecheck_node = find_block(body_node, :livecheck)
|
livecheck_node = find_block(body_node, :livecheck)
|
||||||
@ -110,24 +108,20 @@ module RuboCop
|
|||||||
next if url != livecheck_url && url != "#{livecheck_url}/" && "#{url}/" != livecheck_url
|
next if url != livecheck_url && url != "#{livecheck_url}/" && "#{url}/" != livecheck_url
|
||||||
|
|
||||||
offending_node(livecheck_url_node)
|
offending_node(livecheck_url_node)
|
||||||
@offense = symbol
|
problem "Use `url :#{symbol}`" do |corrector|
|
||||||
problem "Use `url :#{symbol}`"
|
corrector.replace(livecheck_url_node.source_range, "url :#{symbol}")
|
||||||
|
end
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def autocorrect(node)
|
|
||||||
lambda do |corrector|
|
|
||||||
corrector.replace(node.source_range, "url :#{@offense}")
|
|
||||||
@offense = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# This cop ensures that the `regex` call in the `livecheck` block uses parentheses.
|
# This cop ensures that the `regex` call in the `livecheck` block uses parentheses.
|
||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
class LivecheckRegexParentheses < FormulaCop
|
class LivecheckRegexParentheses < FormulaCop
|
||||||
|
extend AutoCorrector
|
||||||
|
|
||||||
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
||||||
livecheck_node = find_block(body_node, :livecheck)
|
livecheck_node = find_block(body_node, :livecheck)
|
||||||
return if livecheck_node.blank?
|
return if livecheck_node.blank?
|
||||||
@ -141,13 +135,9 @@ module RuboCop
|
|||||||
return if parentheses?(livecheck_regex_node)
|
return if parentheses?(livecheck_regex_node)
|
||||||
|
|
||||||
offending_node(livecheck_regex_node)
|
offending_node(livecheck_regex_node)
|
||||||
problem "The `regex` call should always use parentheses."
|
problem "The `regex` call should always use parentheses." do |corrector|
|
||||||
end
|
pattern = livecheck_regex_node.source.split[1..].join
|
||||||
|
corrector.replace(livecheck_regex_node.source_range, "regex(#{pattern})")
|
||||||
def autocorrect(node)
|
|
||||||
lambda do |corrector|
|
|
||||||
pattern = node.source.split[1..].join
|
|
||||||
corrector.replace(node.source_range, "regex(#{pattern})")
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -157,6 +147,8 @@ module RuboCop
|
|||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
class LivecheckRegexExtension < FormulaCop
|
class LivecheckRegexExtension < FormulaCop
|
||||||
|
extend AutoCorrector
|
||||||
|
|
||||||
TAR_PATTERN = /\\?\.t(ar|(g|l|x)z$|[bz2]{2,4}$)(\\?\.((g|l|x)z)|[bz2]{2,4}|Z)?$/i.freeze
|
TAR_PATTERN = /\\?\.t(ar|(g|l|x)z$|[bz2]{2,4}$)(\\?\.((g|l|x)z)|[bz2]{2,4}|Z)?$/i.freeze
|
||||||
|
|
||||||
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
||||||
@ -175,12 +167,8 @@ module RuboCop
|
|||||||
return if match.blank?
|
return if match.blank?
|
||||||
|
|
||||||
offending_node(regex_node)
|
offending_node(regex_node)
|
||||||
problem "Use `\\.t` instead of `#{match}`"
|
problem "Use `\\.t` instead of `#{match}`" do |corrector|
|
||||||
end
|
node = find_strings(regex_node).first
|
||||||
|
|
||||||
def autocorrect(node)
|
|
||||||
lambda do |corrector|
|
|
||||||
node = find_strings(node).first
|
|
||||||
correct = node.source.gsub(TAR_PATTERN, "\\.t")
|
correct = node.source.gsub(TAR_PATTERN, "\\.t")
|
||||||
corrector.replace(node.source_range, correct)
|
corrector.replace(node.source_range, correct)
|
||||||
end
|
end
|
||||||
@ -218,6 +206,10 @@ module RuboCop
|
|||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
class LivecheckRegexCaseInsensitive < FormulaCop
|
class LivecheckRegexCaseInsensitive < FormulaCop
|
||||||
|
extend AutoCorrector
|
||||||
|
|
||||||
|
MSG = "Regexes should be case-insensitive unless sensitivity is explicitly required for proper matching."
|
||||||
|
|
||||||
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
def audit_formula(_node, _class_node, _parent_class_node, body_node)
|
||||||
return if tap_style_exception? :regex_case_sensitive_allowlist
|
return if tap_style_exception? :regex_case_sensitive_allowlist
|
||||||
|
|
||||||
@ -235,12 +227,8 @@ module RuboCop
|
|||||||
return if options_node.source.include?("i")
|
return if options_node.source.include?("i")
|
||||||
|
|
||||||
offending_node(regex_node)
|
offending_node(regex_node)
|
||||||
problem "Regexes should be case-insensitive unless sensitivity is explicitly required for proper matching."
|
problem MSG do |corrector|
|
||||||
end
|
node = regex_node.regopt
|
||||||
|
|
||||||
def autocorrect(node)
|
|
||||||
lambda do |corrector|
|
|
||||||
node = node.regopt
|
|
||||||
corrector.replace(node.source_range, "i#{node.source}".chars.sort.join)
|
corrector.replace(node.source_range, "i#{node.source}".chars.sort.join)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user