Some minor regexp match perf improvements
This commit is contained in:
		
							parent
							
								
									dbb800b7d3
								
							
						
					
					
						commit
						3abbf4447e
					
				@ -20,7 +20,7 @@ module Cask
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def self.english_article
 | 
			
		||||
        @english_article ||= (english_name =~ /^[aeiou]/i) ? "an" : "a"
 | 
			
		||||
        @english_article ||= /^[aeiou]/i.match?(english_name) ? "an" : "a"
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def self.dsl_key
 | 
			
		||||
 | 
			
		||||
@ -843,7 +843,7 @@ module Cask
 | 
			
		||||
    def bad_url_format?(regex, valid_formats_array)
 | 
			
		||||
      return false unless cask.url.to_s.match?(regex)
 | 
			
		||||
 | 
			
		||||
      valid_formats_array.none? { |format| cask.url.to_s =~ format }
 | 
			
		||||
      valid_formats_array.none? { |format| cask.url.to_s&.match?(format) }
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    sig { returns(T::Boolean) }
 | 
			
		||||
 | 
			
		||||
@ -294,7 +294,7 @@ module Homebrew
 | 
			
		||||
 | 
			
		||||
    # Ignore matches to go keg, because all go binaries are statically linked.
 | 
			
		||||
    any_go_deps = formula.deps.any? do |dep|
 | 
			
		||||
      dep.name =~ Version.formula_optionally_versioned_regex(:go)
 | 
			
		||||
      dep.name&.match?(Version.formula_optionally_versioned_regex(:go))
 | 
			
		||||
    end
 | 
			
		||||
    if any_go_deps
 | 
			
		||||
      go_regex = Version.formula_optionally_versioned_regex(:go, full: false)
 | 
			
		||||
 | 
			
		||||
@ -32,7 +32,7 @@ module FormulaCellarChecks
 | 
			
		||||
    keg = Keg.new(formula.prefix)
 | 
			
		||||
    system_openssl = keg.mach_o_files.select do |obj|
 | 
			
		||||
      dlls = obj.dynamically_linked_libraries
 | 
			
		||||
      dlls.any? { |dll| %r{/usr/lib/lib(crypto|ssl|tls)\..*dylib}.match dll }
 | 
			
		||||
      dlls.any? { |dll| %r{/usr/lib/lib(crypto|ssl|tls)\..*dylib}.match? dll }
 | 
			
		||||
    end
 | 
			
		||||
    return if system_openssl.empty?
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1328,7 +1328,7 @@ class Formula
 | 
			
		||||
    self.class.link_overwrite_paths.any? do |p|
 | 
			
		||||
      p == to_check ||
 | 
			
		||||
        to_check.start_with?("#{p.chomp("/")}/") ||
 | 
			
		||||
        to_check =~ /^#{Regexp.escape(p).gsub('\*', ".*?")}$/
 | 
			
		||||
        /^#{Regexp.escape(p).gsub('\*', ".*?")}$/.match?(to_check)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -76,7 +76,7 @@ module Homebrew
 | 
			
		||||
            !@versioned_formula &&
 | 
			
		||||
            (versioned_formulae = formula.versioned_formulae - [formula]) &&
 | 
			
		||||
            versioned_formulae.present?
 | 
			
		||||
        versioned_aliases, unversioned_aliases = formula.aliases.partition { |a| a =~ /.@\d/ }
 | 
			
		||||
        versioned_aliases, unversioned_aliases = formula.aliases.partition { |a| /.@\d/.match?(a) }
 | 
			
		||||
        _, last_alias_version = versioned_formulae.map(&:name).last.split("@")
 | 
			
		||||
 | 
			
		||||
        alias_name_major = "#{formula.name}@#{formula.version.major}"
 | 
			
		||||
@ -715,7 +715,7 @@ module Homebrew
 | 
			
		||||
      return unless stable.url
 | 
			
		||||
 | 
			
		||||
      version = stable.version
 | 
			
		||||
      problem "Stable: version (#{version}) is set to a string without a digit" if version.to_s !~ /\d/
 | 
			
		||||
      problem "Stable: version (#{version}) is set to a string without a digit" unless /\d/.match?(version.to_s)
 | 
			
		||||
 | 
			
		||||
      stable_version_string = version.to_s
 | 
			
		||||
      if stable_version_string.start_with?("HEAD")
 | 
			
		||||
 | 
			
		||||
@ -16,7 +16,7 @@ module Homebrew
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def trailing_newline?
 | 
			
		||||
      /\Z\n/ =~ @text
 | 
			
		||||
      /\Z\n/.match?(@text)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def =~(other)
 | 
			
		||||
@ -32,12 +32,12 @@ module Homebrew
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def line_number(regex, skip = 0)
 | 
			
		||||
      index = @lines.drop(skip).index { |line| line =~ regex }
 | 
			
		||||
      index = @lines.drop(skip).index { |line| line&.match?(regex) }
 | 
			
		||||
      index ? index + 1 : nil
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def reverse_line_number(regex)
 | 
			
		||||
      index = @lines.reverse.index { |line| line =~ regex }
 | 
			
		||||
      index = @lines.reverse.index { |line| line&.match?(regex) }
 | 
			
		||||
      index ? @lines.count - index : nil
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@ -328,7 +328,7 @@ class Keg
 | 
			
		||||
    Utils.popen_read("strings", "-t", "x", "-", file.to_s) do |io|
 | 
			
		||||
      until io.eof?
 | 
			
		||||
        str = io.readline.chomp
 | 
			
		||||
        next if ignores.any? { |i| i =~ str }
 | 
			
		||||
        next if ignores.any? { |i| i&.match?(str) }
 | 
			
		||||
        next unless str.match? path_regex
 | 
			
		||||
 | 
			
		||||
        offset, match = str.split(" ", 2)
 | 
			
		||||
 | 
			
		||||
@ -66,7 +66,7 @@ module Homebrew
 | 
			
		||||
 | 
			
		||||
          # Isolate tag strings and filter by regex
 | 
			
		||||
          tags = stdout.gsub(%r{^.*\trefs/tags/|\^{}$}, "").split("\n").uniq.sort
 | 
			
		||||
          tags.select! { |t| t =~ regex } if regex
 | 
			
		||||
          tags.select! { |t| t&.match?(regex) } if regex
 | 
			
		||||
          tags_data[:tags] = tags
 | 
			
		||||
 | 
			
		||||
          tags_data
 | 
			
		||||
 | 
			
		||||
@ -78,7 +78,7 @@ class DATAPatch < EmbeddedPatch
 | 
			
		||||
    path.open("rb") do |f|
 | 
			
		||||
      loop do
 | 
			
		||||
        line = f.gets
 | 
			
		||||
        break if line.nil? || line =~ /^__END__$/
 | 
			
		||||
        break if line.nil? || /^__END__$/.match?(line)
 | 
			
		||||
      end
 | 
			
		||||
      while (line = f.gets)
 | 
			
		||||
        data << line
 | 
			
		||||
 | 
			
		||||
@ -233,7 +233,7 @@ module RuboCop
 | 
			
		||||
        paths_to_exclude = [%r{/Library/Homebrew/test/}]
 | 
			
		||||
        return true if @file_path.nil? # file_path is nil when source is directly passed to the cop, e.g. in specs
 | 
			
		||||
 | 
			
		||||
        @file_path !~ Regexp.union(paths_to_exclude)
 | 
			
		||||
        !@file_path&.match?(Regexp.union(paths_to_exclude))
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def on_system_methods
 | 
			
		||||
 | 
			
		||||
@ -34,7 +34,7 @@ module RuboCop
 | 
			
		||||
          reason = string_content(reason).sub(name, "")
 | 
			
		||||
          first_word = reason.split.first
 | 
			
		||||
 | 
			
		||||
          if reason =~ /\A[A-Z]/ && !reason.start_with?(*allowlist)
 | 
			
		||||
          if /\A[A-Z]/.match?(reason) && !reason.start_with?(*allowlist)
 | 
			
		||||
            problem "'#{first_word}' from the `keg_only` reason should be '#{first_word.downcase}'." do |corrector|
 | 
			
		||||
              reason[0] = reason[0].downcase
 | 
			
		||||
              corrector.replace(@offensive_node.source_range, "\"#{reason}\"")
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@ module RuboCop
 | 
			
		||||
            option = string_content(option)
 | 
			
		||||
            problem UNI_DEPRECATION_MSG if option == "universal"
 | 
			
		||||
 | 
			
		||||
            if option !~ /with(out)?-/ &&
 | 
			
		||||
            if !/with(out)?-/.match?(option) &&
 | 
			
		||||
               option != "cxx11" &&
 | 
			
		||||
               option != "universal"
 | 
			
		||||
              problem "Options should begin with with/without. " \
 | 
			
		||||
 | 
			
		||||
@ -172,7 +172,7 @@ class Sandbox
 | 
			
		||||
      logs = Utils.popen_read("syslog", *syslog_args)
 | 
			
		||||
 | 
			
		||||
      # These messages are confusing and non-fatal, so don't report them.
 | 
			
		||||
      logs = logs.lines.reject { |l| l.match(/^.*Python\(\d+\) deny file-write.*pyc$/) }.join
 | 
			
		||||
      logs = logs.lines.grep_v(/^.*Python\(\d+\) deny file-write.*pyc$/).join
 | 
			
		||||
 | 
			
		||||
      unless logs.empty?
 | 
			
		||||
        if @logfile
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@ require "cask/audit"
 | 
			
		||||
describe Cask::Audit, :cask do
 | 
			
		||||
  def include_msg?(problems, msg)
 | 
			
		||||
    if msg.is_a?(Regexp)
 | 
			
		||||
      Array(problems).any? { |problem| problem[:message] =~ msg }
 | 
			
		||||
      Array(problems).any? { |problem| problem[:message]&.match?(msg) }
 | 
			
		||||
    else
 | 
			
		||||
      Array(problems).any? { |problem| problem[:message] == msg }
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@ -51,7 +51,7 @@ module Utils
 | 
			
		||||
 | 
			
		||||
      def receipt_path(bottle_file)
 | 
			
		||||
        bottle_file_list(bottle_file).find do |line|
 | 
			
		||||
          line =~ %r{.+/.+/INSTALL_RECEIPT.json}
 | 
			
		||||
          %r{.+/.+/INSTALL_RECEIPT.json}.match?(line)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -335,7 +335,7 @@ module Utils
 | 
			
		||||
        # Strategy:
 | 
			
		||||
        # If the `:homepage` 404s, it's a GitHub link, and we have a token then
 | 
			
		||||
        # check the API (which does use tokens) for the repository
 | 
			
		||||
        repo_details = url.match(%r{https?://github\.com/(?<user>[^/]+)/(?<repo>[^/]+)/?.*})
 | 
			
		||||
        repo_details = url.match?(%r{https?://github\.com/(?<user>[^/]+)/(?<repo>[^/]+)/?.*})
 | 
			
		||||
        check_github_api = url_type == SharedAudits::URL_TYPE_HOMEPAGE &&
 | 
			
		||||
                           details[:status_code] == "404" &&
 | 
			
		||||
                           repo_details &&
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user