Merge pull request #16451 from dduugg/no-string-indent

Remove ActiveSupport String#indent core extension
This commit is contained in:
Mike McQuaid 2024-01-09 08:51:14 +00:00 committed by GitHub
commit 8c73ceb757
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 26 additions and 73 deletions

1
.gitignore vendored
View File

@ -72,7 +72,6 @@
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/deep_dup.rb !**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/deep_dup.rb
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/duplicable.rb !**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/object/duplicable.rb
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/exclude.rb !**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/exclude.rb
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/indent.rb
# Ignore partially included gems where we don't need all files # Ignore partially included gems where we don't need all files
**/vendor/gems/mechanize-*/.* **/vendor/gems/mechanize-*/.*

View File

@ -18,7 +18,6 @@ require "active_support/core_ext/file/atomic"
require "active_support/core_ext/hash/deep_merge" require "active_support/core_ext/hash/deep_merge"
require "active_support/core_ext/hash/keys" require "active_support/core_ext/hash/keys"
require "active_support/core_ext/string/exclude" require "active_support/core_ext/string/exclude"
require "active_support/core_ext/string/indent"
HOMEBREW_API_DEFAULT_DOMAIN = ENV.fetch("HOMEBREW_API_DEFAULT_DOMAIN").freeze HOMEBREW_API_DEFAULT_DOMAIN = ENV.fetch("HOMEBREW_API_DEFAULT_DOMAIN").freeze
HOMEBREW_BOTTLE_DEFAULT_DOMAIN = ENV.fetch("HOMEBREW_BOTTLE_DEFAULT_DOMAIN").freeze HOMEBREW_BOTTLE_DEFAULT_DOMAIN = ENV.fetch("HOMEBREW_BOTTLE_DEFAULT_DOMAIN").freeze

View File

@ -511,7 +511,7 @@ describe "brew bottle" do
bottle.sha256(catalina: "109c0cb581a7b5d84da36d84b221fb9dd0f8a927b3044d82611791c9907e202e") bottle.sha256(catalina: "109c0cb581a7b5d84da36d84b221fb9dd0f8a927b3044d82611791c9907e202e")
expect(homebrew.bottle_output(bottle, nil)).to eq( expect(homebrew.bottle_output(bottle, nil)).to eq(
<<~RUBY.indent(2), <<-RUBY,
bottle do bottle do
root_url "https://example.com" root_url "https://example.com"
sha256 catalina: "109c0cb581a7b5d84da36d84b221fb9dd0f8a927b3044d82611791c9907e202e" sha256 catalina: "109c0cb581a7b5d84da36d84b221fb9dd0f8a927b3044d82611791c9907e202e"
@ -526,7 +526,7 @@ describe "brew bottle" do
bottle.sha256(catalina: "109c0cb581a7b5d84da36d84b221fb9dd0f8a927b3044d82611791c9907e202e") bottle.sha256(catalina: "109c0cb581a7b5d84da36d84b221fb9dd0f8a927b3044d82611791c9907e202e")
expect(homebrew.bottle_output(bottle, "ExampleStrategy")).to eq( expect(homebrew.bottle_output(bottle, "ExampleStrategy")).to eq(
<<~RUBY.indent(2), <<-RUBY,
bottle do bottle do
root_url "https://example.com", root_url "https://example.com",
using: ExampleStrategy using: ExampleStrategy

View File

@ -177,7 +177,7 @@ RSpec.shared_context "integration test" do # rubocop:disable RSpec/ContextWordin
Formulary.core_path(name).tap do |formula_path| Formulary.core_path(name).tap do |formula_path|
formula_path.write <<~RUBY formula_path.write <<~RUBY
class #{Formulary.class_s(name)} < Formula class #{Formulary.class_s(name)} < Formula
#{content.indent(2)} #{content.gsub(/^(?!$)/, " ")}
end end
RUBY RUBY
end end

View File

@ -5,7 +5,7 @@ require "utils/ast"
describe Utils::AST do describe Utils::AST do
describe ".stanza_text" do describe ".stanza_text" do
let(:compound_license) do let(:compound_license) do
<<~RUBY.chomp <<-RUBY
license all_of: [ license all_of: [
:public_domain, :public_domain,
"MIT", "MIT",
@ -36,14 +36,14 @@ describe Utils::AST do
it "adds indent to stanza text if specified" do it "adds indent to stanza text if specified" do
expect(described_class.stanza_text(:revision, "revision 1", indent: 2)).to eq(" revision 1") expect(described_class.stanza_text(:revision, "revision 1", indent: 2)).to eq(" revision 1")
expect(described_class.stanza_text(:license, 'license "MIT"', indent: 2)).to eq(' license "MIT"') expect(described_class.stanza_text(:license, 'license "MIT"', indent: 2)).to eq(' license "MIT"')
expect(described_class.stanza_text(:license, compound_license, indent: 2)).to eq(compound_license.indent(2)) expect(described_class.stanza_text(:license, compound_license, indent: 2)).to eq(compound_license)
end end
it "does not add indent if already indented" do it "does not add indent if already indented" do
expect(described_class.stanza_text(:revision, " revision 1", indent: 2)).to eq(" revision 1") expect(described_class.stanza_text(:revision, " revision 1", indent: 2)).to eq(" revision 1")
expect( expect(
described_class.stanza_text(:license, compound_license.indent(2), indent: 2), described_class.stanza_text(:license, compound_license, indent: 2),
).to eq(compound_license.indent(2)) ).to eq(compound_license)
end end
end end
end end

View File

@ -248,7 +248,7 @@ describe Utils::AST::FormulaAST do
describe "#add_bottle_block" do describe "#add_bottle_block" do
let(:bottle_output) do let(:bottle_output) do
<<~RUBY.chomp.indent(2) <<-RUBY
bottle do bottle do
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
end end

View File

@ -35,7 +35,7 @@ module Utils
value if (node.is_a?(SendNode) || node.is_a?(BlockNode)) && node.method_name == name value if (node.is_a?(SendNode) || node.is_a?(BlockNode)) && node.method_name == name
end end
text ||= "#{name} #{value.inspect}" text ||= "#{name} #{value.inspect}"
text = text.indent(indent) if indent && !text.match?(/\A\n* +/) text = text.gsub(/^(?!$)/, " " * indent) if indent && !text.match?(/\A\n* +/)
text text
end end

View File

@ -1,45 +0,0 @@
# frozen_string_literal: true
class String
# Same as +indent+, except it indents the receiver in-place.
#
# Returns the indented string, or +nil+ if there was nothing to indent.
def indent!(amount, indent_string = nil, indent_empty_lines = false)
indent_string = indent_string || self[/^[ \t]/] || " "
re = indent_empty_lines ? /^/ : /^(?!$)/
gsub!(re, indent_string * amount)
end
# Indents the lines in the receiver:
#
# <<EOS.indent(2)
# def some_method
# some_code
# end
# EOS
# # =>
# def some_method
# some_code
# end
#
# The second argument, +indent_string+, specifies which indent string to
# use. The default is +nil+, which tells the method to make a guess by
# peeking at the first indented line, and fallback to a space if there is
# none.
#
# " foo".indent(2) # => " foo"
# "foo\n\t\tbar".indent(2) # => "\t\tfoo\n\t\t\t\tbar"
# "foo".indent(2, "\t") # => "\t\tfoo"
#
# While +indent_string+ is typically one space or tab, it may be any string.
#
# The third argument, +indent_empty_lines+, is a flag that says whether
# empty lines should be indented. Default is false.
#
# "foo\n\nbar".indent(2) # => " foo\n\n bar"
# "foo\n\nbar".indent(2, nil, true) # => " foo\n \n bar"
#
def indent(amount, indent_string = nil, indent_empty_lines = false)
dup.tap { |_| _.indent!(amount, indent_string, indent_empty_lines) }
end
end