Class: StringInreplaceExtension Private

Inherits:
Object
  • Object
show all
Defined in:
utils/string_inreplace_extension.rb

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

Used by the Utils::Inreplace.inreplace function.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(string) ⇒ void

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Parameters:



13
14
15
16
# File 'utils/string_inreplace_extension.rb', line 13

def initialize(string)
  @inreplace_string = string
  @errors = T.let([], T::Array[String])
end

Instance Attribute Details

#errorsArray<String>

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



7
8
9
# File 'utils/string_inreplace_extension.rb', line 7

def errors
  @errors
end

#inreplace_stringString

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



10
11
12
# File 'utils/string_inreplace_extension.rb', line 10

def inreplace_string
  @inreplace_string
end

Instance Method Details

#change_make_var!(flag, new_value) ⇒ void

This method returns an undefined value.

Looks for Makefile style variable definitions and replaces the value with "new_value", or removes the definition entirely.

Parameters:



57
58
59
60
61
62
63
# File 'utils/string_inreplace_extension.rb', line 57

def change_make_var!(flag, new_value)
  return if gsub!(/^#{Regexp.escape(flag)}[ \t]*[\\?+:!]?=[ \t]*((?:.*\\\n)*.*)$/,
                  "#{flag}=#{new_value}",
                  audit_result: false)

  errors << "expected to change #{flag.inspect} to #{new_value.inspect}"
end

#get_make_var(flag) ⇒ String

Finds the specified variable.

Parameters:

Returns:



84
85
86
# File 'utils/string_inreplace_extension.rb', line 84

def get_make_var(flag)
  T.must(inreplace_string[/^#{Regexp.escape(flag)}[ \t]*[\\?+:!]?=[ \t]*((?:.*\\\n)*.*)$/, 1])
end

#gsub!(before, after, old_audit_result = nil, audit_result: true) ⇒ String?

Same as String#gsub!, but warns if nothing was replaced.

Parameters:

  • before (Pathname, Regexp, String)
  • after (Pathname, String)
  • old_audit_result (Boolean, nil) (defaults to: nil)
  • audit_result (Boolean) (defaults to: true)

Returns:



39
40
41
42
43
44
45
46
47
48
49
50
# File 'utils/string_inreplace_extension.rb', line 39

def gsub!(before, after, old_audit_result = nil, audit_result: true)
  # NOTE: must check for `#nil?` and not `#blank?`, or else `old_audit_result = false` will not call `odeprecated`.
  unless old_audit_result.nil?
    odeprecated "gsub!(before, after, #{old_audit_result})",
                "gsub!(before, after, audit_result: #{old_audit_result})"
    audit_result = old_audit_result
  end
  before = before.to_s if before.is_a?(Pathname)
  result = inreplace_string.gsub!(before, after.to_s)
  errors << "expected replacement of #{before.inspect} with #{after.inspect}" if audit_result && result.nil?
  result
end

#remove_make_var!(flags) ⇒ void

This method returns an undefined value.

Removes variable assignments completely.

Parameters:



69
70
71
72
73
74
75
76
77
78
# File 'utils/string_inreplace_extension.rb', line 69

def remove_make_var!(flags)
  Array(flags).each do |flag|
    # Also remove trailing \n, if present.
    next if gsub!(/^#{Regexp.escape(flag)}[ \t]*[\\?+:!]?=(?:.*\\\n)*.*$\n?/,
                  "",
                  audit_result: false)

    errors << "expected to remove #{flag.inspect}"
  end
end

#sub!(before, after, audit_result: true) ⇒ String?

Same as String#sub!, but warns if nothing was replaced.

Parameters:

  • before (Regexp, String)
  • after (String)
  • audit_result (Boolean) (defaults to: true)

Returns:



22
23
24
25
26
# File 'utils/string_inreplace_extension.rb', line 22

def sub!(before, after, audit_result: true)
  result = inreplace_string.sub!(before, after)
  errors << "expected replacement of #{before.inspect} with #{after.inspect}" if audit_result && result.nil?
  result
end