mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Remove ActiveSupport String filters
This commit is contained in:
parent
a782847293
commit
b3522b3bb8
1
.gitignore
vendored
1
.gitignore
vendored
@ -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/filters.rb
|
|
||||||
!**/vendor/bundle/ruby/*/gems/activesupport-*/lib/active_support/core_ext/string/indent.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
|
||||||
|
@ -155,7 +155,7 @@ module Homebrew
|
|||||||
name = option.first
|
name = option.first
|
||||||
desc = option.second
|
desc = option.second
|
||||||
if name.start_with? "--[no-]"
|
if name.start_with? "--[no-]"
|
||||||
options[name.remove("[no-]")] = desc
|
options[name.gsub("[no-]", "")] = desc
|
||||||
options[name.sub("[no-]", "no-")] = desc
|
options[name.sub("[no-]", "no-")] = desc
|
||||||
else
|
else
|
||||||
options[name] = desc
|
options[name] = desc
|
||||||
|
@ -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/filters"
|
|
||||||
require "active_support/core_ext/string/indent"
|
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
|
||||||
|
@ -14,7 +14,7 @@ module Homebrew
|
|||||||
|
|
||||||
# Bump this whenever a committed vendored gem is later added to gitignore.
|
# Bump this whenever a committed vendored gem is later added to gitignore.
|
||||||
# This will trigger it to reinstall properly if `brew install-bundler-gems` needs it.
|
# This will trigger it to reinstall properly if `brew install-bundler-gems` needs it.
|
||||||
VENDOR_VERSION = 3
|
VENDOR_VERSION = 4
|
||||||
private_constant :VENDOR_VERSION
|
private_constant :VENDOR_VERSION
|
||||||
|
|
||||||
RUBY_BUNDLE_VENDOR_DIRECTORY = (HOMEBREW_LIBRARY_PATH/"vendor/bundle/ruby").freeze
|
RUBY_BUNDLE_VENDOR_DIRECTORY = (HOMEBREW_LIBRARY_PATH/"vendor/bundle/ruby").freeze
|
||||||
|
@ -1,145 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
class String
|
|
||||||
# Returns the string, first removing all whitespace on both ends of
|
|
||||||
# the string, and then changing remaining consecutive whitespace
|
|
||||||
# groups into one space each.
|
|
||||||
#
|
|
||||||
# Note that it handles both ASCII and Unicode whitespace.
|
|
||||||
#
|
|
||||||
# %{ Multi-line
|
|
||||||
# string }.squish # => "Multi-line string"
|
|
||||||
# " foo bar \n \t boo".squish # => "foo bar boo"
|
|
||||||
def squish
|
|
||||||
dup.squish!
|
|
||||||
end
|
|
||||||
|
|
||||||
# Performs a destructive squish. See String#squish.
|
|
||||||
# str = " foo bar \n \t boo"
|
|
||||||
# str.squish! # => "foo bar boo"
|
|
||||||
# str # => "foo bar boo"
|
|
||||||
def squish!
|
|
||||||
gsub!(/[[:space:]]+/, " ")
|
|
||||||
strip!
|
|
||||||
self
|
|
||||||
end
|
|
||||||
|
|
||||||
# Returns a new string with all occurrences of the patterns removed.
|
|
||||||
# str = "foo bar test"
|
|
||||||
# str.remove(" test") # => "foo bar"
|
|
||||||
# str.remove(" test", /bar/) # => "foo "
|
|
||||||
# str # => "foo bar test"
|
|
||||||
def remove(*patterns)
|
|
||||||
dup.remove!(*patterns)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Alters the string by removing all occurrences of the patterns.
|
|
||||||
# str = "foo bar test"
|
|
||||||
# str.remove!(" test", /bar/) # => "foo "
|
|
||||||
# str # => "foo "
|
|
||||||
def remove!(*patterns)
|
|
||||||
patterns.each do |pattern|
|
|
||||||
gsub! pattern, ""
|
|
||||||
end
|
|
||||||
|
|
||||||
self
|
|
||||||
end
|
|
||||||
|
|
||||||
# Truncates a given +text+ after a given <tt>length</tt> if +text+ is longer than <tt>length</tt>:
|
|
||||||
#
|
|
||||||
# 'Once upon a time in a world far far away'.truncate(27)
|
|
||||||
# # => "Once upon a time in a wo..."
|
|
||||||
#
|
|
||||||
# Pass a string or regexp <tt>:separator</tt> to truncate +text+ at a natural break:
|
|
||||||
#
|
|
||||||
# 'Once upon a time in a world far far away'.truncate(27, separator: ' ')
|
|
||||||
# # => "Once upon a time in a..."
|
|
||||||
#
|
|
||||||
# 'Once upon a time in a world far far away'.truncate(27, separator: /\s/)
|
|
||||||
# # => "Once upon a time in a..."
|
|
||||||
#
|
|
||||||
# The last characters will be replaced with the <tt>:omission</tt> string (defaults to "...")
|
|
||||||
# for a total length not exceeding <tt>length</tt>:
|
|
||||||
#
|
|
||||||
# 'And they found that many people were sleeping better.'.truncate(25, omission: '... (continued)')
|
|
||||||
# # => "And they f... (continued)"
|
|
||||||
def truncate(truncate_at, options = {})
|
|
||||||
return dup unless length > truncate_at
|
|
||||||
|
|
||||||
omission = options[:omission] || "..."
|
|
||||||
length_with_room_for_omission = truncate_at - omission.length
|
|
||||||
stop = \
|
|
||||||
if options[:separator]
|
|
||||||
rindex(options[:separator], length_with_room_for_omission) || length_with_room_for_omission
|
|
||||||
else
|
|
||||||
length_with_room_for_omission
|
|
||||||
end
|
|
||||||
|
|
||||||
+"#{self[0, stop]}#{omission}"
|
|
||||||
end
|
|
||||||
|
|
||||||
# Truncates +text+ to at most <tt>bytesize</tt> bytes in length without
|
|
||||||
# breaking string encoding by splitting multibyte characters or breaking
|
|
||||||
# grapheme clusters ("perceptual characters") by truncating at combining
|
|
||||||
# characters.
|
|
||||||
#
|
|
||||||
# >> "🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".size
|
|
||||||
# => 20
|
|
||||||
# >> "🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".bytesize
|
|
||||||
# => 80
|
|
||||||
# >> "🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".truncate_bytes(20)
|
|
||||||
# => "🔪🔪🔪🔪…"
|
|
||||||
#
|
|
||||||
# The truncated text ends with the <tt>:omission</tt> string, defaulting
|
|
||||||
# to "…", for a total length not exceeding <tt>bytesize</tt>.
|
|
||||||
def truncate_bytes(truncate_at, omission: "…")
|
|
||||||
omission ||= ""
|
|
||||||
|
|
||||||
case
|
|
||||||
when bytesize <= truncate_at
|
|
||||||
dup
|
|
||||||
when omission.bytesize > truncate_at
|
|
||||||
raise ArgumentError, "Omission #{omission.inspect} is #{omission.bytesize}, larger than the truncation length of #{truncate_at} bytes"
|
|
||||||
when omission.bytesize == truncate_at
|
|
||||||
omission.dup
|
|
||||||
else
|
|
||||||
self.class.new.tap do |cut|
|
|
||||||
cut_at = truncate_at - omission.bytesize
|
|
||||||
|
|
||||||
scan(/\X/) do |grapheme|
|
|
||||||
if cut.bytesize + grapheme.bytesize <= cut_at
|
|
||||||
cut << grapheme
|
|
||||||
else
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
cut << omission
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Truncates a given +text+ after a given number of words (<tt>words_count</tt>):
|
|
||||||
#
|
|
||||||
# 'Once upon a time in a world far far away'.truncate_words(4)
|
|
||||||
# # => "Once upon a time..."
|
|
||||||
#
|
|
||||||
# Pass a string or regexp <tt>:separator</tt> to specify a different separator of words:
|
|
||||||
#
|
|
||||||
# 'Once<br>upon<br>a<br>time<br>in<br>a<br>world'.truncate_words(5, separator: '<br>')
|
|
||||||
# # => "Once<br>upon<br>a<br>time<br>in..."
|
|
||||||
#
|
|
||||||
# The last characters will be replaced with the <tt>:omission</tt> string (defaults to "..."):
|
|
||||||
#
|
|
||||||
# 'And they found that many people were sleeping better.'.truncate_words(5, omission: '... (continued)')
|
|
||||||
# # => "And they found that many... (continued)"
|
|
||||||
def truncate_words(words_count, options = {})
|
|
||||||
sep = options[:separator] || /\s+/
|
|
||||||
sep = Regexp.escape(sep.to_s) unless Regexp === sep
|
|
||||||
if self =~ /\A((?>.+?#{sep}){#{words_count - 1}}.+?)#{sep}.*/m
|
|
||||||
$1 + (options[:omission] || "...")
|
|
||||||
else
|
|
||||||
dup
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
x
Reference in New Issue
Block a user