Class: StringInreplaceExtension Private

Inherits:
Object
  • Object
show all
Includes:
Utils::Output::Mixin
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

Methods included from Utils::Output::Mixin

#odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #pretty_duration, #pretty_installed, #pretty_outdated, #pretty_uninstalled

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:



17
18
19
20
# File 'utils/string_inreplace_extension.rb', line 17

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:



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

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:



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

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:



61
62
63
64
65
66
67
# File 'utils/string_inreplace_extension.rb', line 61

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:



88
89
90
# File 'utils/string_inreplace_extension.rb', line 88

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:



43
44
45
46
47
48
49
50
51
52
53
54
# File 'utils/string_inreplace_extension.rb', line 43

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 `odisabled`.
  unless old_audit_result.nil?
    odisabled "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:



73
74
75
76
77
78
79
80
81
82
# File 'utils/string_inreplace_extension.rb', line 73

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:



26
27
28
29
30
# File 'utils/string_inreplace_extension.rb', line 26

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