diff --git a/Library/Homebrew/cask/auditor.rb b/Library/Homebrew/cask/auditor.rb index c80aa39ce5..4de53cd573 100644 --- a/Library/Homebrew/cask/auditor.rb +++ b/Library/Homebrew/cask/auditor.rb @@ -48,7 +48,7 @@ module Cask end def audit_languages(languages) - ohai "Auditing language: #{languages.map { |lang| "'#{lang}'" }.join(", ")}" + ohai "Auditing language: #{languages.map { |lang| "'#{lang}'" }.to_sentence}" MacOS.instance_variable_set(:@languages, languages) audit_cask_instance(CaskLoader.load(cask.sourcefile_path)) ensure diff --git a/Library/Homebrew/cask/cask_dependencies.rb b/Library/Homebrew/cask/cask_dependencies.rb index bd8a822760..f40fc4fe97 100644 --- a/Library/Homebrew/cask/cask_dependencies.rb +++ b/Library/Homebrew/cask/cask_dependencies.rb @@ -32,7 +32,7 @@ module Cask rescue TSort::Cyclic strongly_connected_components = graph.strongly_connected_components.sort_by(&:count) cyclic_dependencies = strongly_connected_components.last - [cask] - raise CaskCyclicDependencyError.new(cask.token, cyclic_dependencies.join(", ")) + raise CaskCyclicDependencyError.new(cask.token, cyclic_dependencies.to_sentence) end end end diff --git a/Library/Homebrew/cask/cmd/doctor.rb b/Library/Homebrew/cask/cmd/doctor.rb index 82e917018b..b14c656f47 100644 --- a/Library/Homebrew/cask/cmd/doctor.rb +++ b/Library/Homebrew/cask/cmd/doctor.rb @@ -182,10 +182,14 @@ module Cask end def self.cask_count_for_tap(tap) - Formatter.pluralize(tap.cask_files.count, "cask") - rescue - add_error "Unable to read from Tap: #{tap.path}" - "0" + cask_count = begin + tap.cask_files.count + rescue + add_error "Unable to read from Tap: #{tap.path}" + 0 + end + + "#{cask_count} #{"cask".pluralize(cask_count)}" end def self.render_env_var(var) diff --git a/Library/Homebrew/cask/cmd/uninstall.rb b/Library/Homebrew/cask/cmd/uninstall.rb index e2fb0fe324..9b9f134347 100644 --- a/Library/Homebrew/cask/cmd/uninstall.rb +++ b/Library/Homebrew/cask/cmd/uninstall.rb @@ -23,11 +23,9 @@ module Cask next if (versions = cask.versions).empty? - single = versions.count == 1 - puts <<~EOS - #{cask} #{versions.join(", ")} #{single ? "is" : "are"} still installed. - Remove #{single ? "it" : "them all"} with `brew cask uninstall --force #{cask}`. + #{cask} #{versions.to_sentence} #{"is".pluralize(versions.count)} still installed. + Remove #{(versions.count == 1) ? "it" : "them all"} with `brew cask uninstall --force #{cask}`. EOS end end diff --git a/Library/Homebrew/cask/cmd/upgrade.rb b/Library/Homebrew/cask/cmd/upgrade.rb index 33d9d6380f..29e7281035 100644 --- a/Library/Homebrew/cask/cmd/upgrade.rb +++ b/Library/Homebrew/cask/cmd/upgrade.rb @@ -28,7 +28,7 @@ module Cask end ohai "Casks with `auto_updates` or `version :latest` will not be upgraded" if args.empty? && !greedy? - oh1 "Upgrading #{Formatter.pluralize(outdated_casks.length, "outdated package")}, with result:" + oh1 "Upgrading #{outdated_casks.count} #{"outdated package".pluralize(outdated_casks.count)}:" cask_upgrades = outdated_casks.map do |cask| if cask.installed_caskfile.nil? "#{cask.full_name} #{cask.version}" diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index ef3c1288fa..be8398bdb5 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -49,7 +49,7 @@ module Homebrew if ARGV.named.empty? if HOMEBREW_CELLAR.exist? count = Formula.racks.length - puts "#{Formatter.pluralize(count, "keg")}, #{HOMEBREW_CELLAR.abv}" + puts "#{count} #{"keg".pluralize(count)}, #{HOMEBREW_CELLAR.abv}" end else ARGV.named.each_with_index do |f, i| diff --git a/Library/Homebrew/cmd/tap-info.rb b/Library/Homebrew/cmd/tap-info.rb index 0f63082a10..082deb611d 100644 --- a/Library/Homebrew/cmd/tap-info.rb +++ b/Library/Homebrew/cmd/tap-info.rb @@ -48,11 +48,11 @@ module Homebrew pinned_count += 1 if tap.pinned? private_count += 1 if tap.private? end - info = Formatter.pluralize(tap_count, "tap").to_s + info = "#{tap_count} #{"tap".pluralize(tap_count)}" info += ", #{pinned_count} pinned" info += ", #{private_count} private" - info += ", #{Formatter.pluralize(formula_count, "formula")}" - info += ", #{Formatter.pluralize(command_count, "command")}" + info += ", #{formula_count} #{"formula".pluralize(formula_count)}" + info += ", #{command_count} #{"command".pluralize(command_count)}" info += ", #{Tap::TAP_DIRECTORY.abv}" if Tap::TAP_DIRECTORY.directory? puts info else diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index b82d7e8155..0476f34329 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -66,8 +66,7 @@ module Homebrew if rack.directory? versions = rack.subdirs.map(&:basename) - verb = Formatter.pluralize(versions.length, "is", "are") - puts "#{keg.name} #{versions.join(", ")} #{verb} still installed." + puts "#{keg.name} #{versions.to_sentence} #{"is".pluralize(versions.count)} still installed." puts "Remove all versions with `brew uninstall --force #{keg.name}`." end end @@ -119,31 +118,20 @@ module Homebrew protected - def are(items) - Formatter.pluralize(items.count, "is", "are", show_count: false) - end - - def they(items) - Formatter.pluralize(items.count, "it", "they", show_count: false) - end - - def list(items) - items.join(", ") - end - def sample_command "brew uninstall --ignore-dependencies #{ARGV.named.join(" ")}" end def are_required_by_deps - "#{are reqs} required by #{list deps}, which #{are deps} currently installed" + "#{"is".pluralize(reqs.count)} required by #{deps.to_sentence}, " \ + "which #{"is".pluralize(deps.count)} currently installed" end end class DeveloperDependentsMessage < DependentsMessage def output opoo <<~EOS - #{list reqs} #{are_required_by_deps}. + #{reqs.to_sentence} #{are_required_by_deps}. You can silence this warning with: #{sample_command} EOS @@ -153,8 +141,8 @@ module Homebrew class NondeveloperDependentsMessage < DependentsMessage def output ofail <<~EOS - Refusing to uninstall #{list reqs} - because #{they reqs} #{are_required_by_deps}. + Refusing to uninstall #{reqs.to_sentence} + because #{"it".pluralize(reqs.count)} #{are_required_by_deps}. You can override this and force removal with: #{sample_command} EOS diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index f13869b400..e71356d0e3 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -107,8 +107,7 @@ module Homebrew unless updated_taps.empty? update_preinstall_header - puts "Updated #{Formatter.pluralize(updated_taps.size, "tap")} " \ - "(#{updated_taps.join(", ")})." + puts "Updated #{updated_taps.count} #{"tap".pluralize(updated_taps.count)} (#{updated_taps.to_sentence})." updated = true end diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb index f02fe9ef26..3fbd3ed6fd 100644 --- a/Library/Homebrew/cmd/upgrade.rb +++ b/Library/Homebrew/cmd/upgrade.rb @@ -63,14 +63,14 @@ module Homebrew formulae_to_install = outdated.map(&:latest_formula) if !pinned.empty? && !ARGV.include?("--ignore-pinned") - ofail "Not upgrading #{Formatter.pluralize(pinned.length, "pinned package")}:" + ofail "Not upgrading #{pinned.count} pinned #{"package".pluralize(pinned.count)}:" puts pinned.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", " end if formulae_to_install.empty? oh1 "No packages to upgrade" else - oh1 "Upgrading #{Formatter.pluralize(formulae_to_install.length, "outdated package")}, with result:" + oh1 "Upgrading #{formulae_to_install.count} outdated #{"package".pluralize(formulae_to_install.count)}:" formulae_upgrades = formulae_to_install.map do |f| if f.optlinked? "#{f.full_specified_name} #{Keg.new(f.opt_prefix).version} -> #{f.pkg_version}" @@ -304,7 +304,7 @@ module Homebrew # Print the pinned dependents. unless pinned.empty? - ohai "Not upgrading #{Formatter.pluralize(pinned.length, "pinned dependent")}:" + ohai "Not upgrading #{pinned.count} pinned #{"dependent".pluralize(pinned.count)}:" puts pinned.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", " end @@ -312,7 +312,7 @@ module Homebrew if upgradable.empty? ohai "No dependents to upgrade" if ARGV.verbose? else - ohai "Upgrading #{Formatter.pluralize(upgradable.length, "dependent")}:" + ohai "Upgrading #{upgradable.count} #{"dependent".pluralize(upgradable.count)}:" formulae_upgrades = upgradable.map do |f| if f.optlinked? "#{f.full_specified_name} #{Keg.new(f.opt_prefix).version} -> #{f.pkg_version}" @@ -337,7 +337,7 @@ module Homebrew # Print the pinned dependents. unless pinned.empty? - onoe "Not reinstalling #{Formatter.pluralize(pinned.length, "broken and outdated, but pinned dependent")}:" + onoe "Not reinstalling #{pinned.count} broken and outdated, but pinned #{"dependent".pluralize(pinned.count)}:" $stderr.puts pinned.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", " end @@ -345,7 +345,7 @@ module Homebrew if reinstallable.empty? ohai "No broken dependents to reinstall" if ARGV.verbose? else - ohai "Reinstalling #{Formatter.pluralize(reinstallable.length, "broken dependent")} from source:" + ohai "Reinstalling #{reinstallable.count} broken #{"dependent".pluralize(reinstallable.count)} from source:" puts reinstallable.map(&:full_specified_name).join(", ") end diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index c4fa8b4097..07f492151f 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -186,9 +186,9 @@ module Homebrew end total_problems_count = problem_count + new_formula_problem_count - problem_plural = Formatter.pluralize(total_problems_count, "problem") - formula_plural = Formatter.pluralize(formula_count, "formula") - corrected_problem_plural = Formatter.pluralize(corrected_problem_count, "problem") + problem_plural = "#{total_problems_count} #{"problem".pluralize(total_problems_count)}" + formula_plural = "#{formula_count} #{"formula".pluralize(formula_count)}" + corrected_problem_plural = "#{corrected_problem_count} #{"problem".pluralize(corrected_problem_count)}" errors_summary = "#{problem_plural} in #{formula_plural} detected" if corrected_problem_count.positive? errors_summary += ", #{corrected_problem_plural} corrected" diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index 087e95b87c..6ad85aeb09 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -441,18 +441,10 @@ end # and are being installed on a system without necessary build tools class BuildToolsError < RuntimeError def initialize(formulae) - if formulae.length > 1 - formula_text = "formulae" - package_text = "binary packages" - else - formula_text = "formula" - package_text = "a binary package" - end - super <<~EOS - The following #{formula_text}: - #{formulae.join(", ")} - cannot be installed as #{package_text} and must be built from source. + The following #{"formula".pluralize(formulae.count)} + #{formulae.to_sentence} + cannot be installed as #{"binary package".pluralize(formulae.count)} and must be built from source. #{DevelopmentTools.installation_instructions} EOS end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 22f81166ac..9a86aa085c 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -537,7 +537,7 @@ class FormulaInstaller puts "All dependencies for #{formula.full_name} are satisfied." elsif !deps.empty? oh1 "Installing dependencies for #{formula.full_name}: " \ - "#{deps.map(&:first).map(&Formatter.method(:identifier)).join(", ")}", + "#{deps.map(&:first).map(&Formatter.method(:identifier)).to_sentence}", truncate: false deps.each { |dep, options| install_dependency(dep, options) } end diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index 3ed18d7229..70a35efc27 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -9,6 +9,18 @@ require_relative "load_path" require "active_support/core_ext/numeric/time" require "active_support/core_ext/array/access" +require "active_support/i18n" +require "active_support/inflector/inflections" + +I18n.backend.available_locales # Initialize locales so they can be overwritten. +I18n.backend.store_translations :en, support: { array: { last_word_connector: " and " } } + +ActiveSupport::Inflector.inflections(:en) do |inflect| + inflect.irregular "formula", "formulae" + inflect.irregular "is", "are" + inflect.irregular "it", "they" +end + require "config" require "os" require "extend/ARGV" diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb index 0e73ff545d..44d4c36e4b 100644 --- a/Library/Homebrew/tap.rb +++ b/Library/Homebrew/tap.rb @@ -297,7 +297,7 @@ class Tap link_completions_and_manpages - formatted_contents = Formatter.comma_and(*contents)&.prepend(" ") + formatted_contents = contents.presence&.to_sentence&.dup&.prepend(" ") puts "Tapped#{formatted_contents} (#{path.abv})." unless quiet Descriptions.cache_formulae(formula_names) @@ -328,7 +328,7 @@ class Tap puts "Untapping #{name}..." abv = path.abv - formatted_contents = Formatter.comma_and(*contents)&.prepend(" ") + formatted_contents = contents.presence&.to_sentence&.dup&.prepend(" ") unpin if pinned? Descriptions.uncache_formulae(formula_names) @@ -365,15 +365,15 @@ class Tap contents = [] if (command_count = command_files.count).positive? - contents << Formatter.pluralize(command_count, "command") + contents << "#{command_count} #{"command".pluralize(command_count)}" end if (cask_count = cask_files.count).positive? - contents << Formatter.pluralize(cask_count, "cask") + contents << "#{cask_count} #{"cask".pluralize(cask_count)}" end if (formula_count = formula_files.count).positive? - contents << Formatter.pluralize(formula_count, "formula") + contents << "#{formula_count} #{"formula".pluralize(formula_count)}" end contents diff --git a/Library/Homebrew/test/formatter_spec.rb b/Library/Homebrew/test/formatter_spec.rb index 1c97bf6f8f..168b80ba8d 100644 --- a/Library/Homebrew/test/formatter_spec.rb +++ b/Library/Homebrew/test/formatter_spec.rb @@ -53,45 +53,4 @@ describe Formatter do it { is_expected.to eq("\n") } end end - - describe "::pluralize" do - it "pluralizes words" do - expect(described_class.pluralize(0, "cask")).to eq("0 casks") - expect(described_class.pluralize(1, "cask")).to eq("1 cask") - expect(described_class.pluralize(2, "cask")).to eq("2 casks") - end - - it "allows specifying custom plural forms" do - expect(described_class.pluralize(1, "child", "children")).to eq("1 child") - expect(described_class.pluralize(2, "child", "children")).to eq("2 children") - end - - it "has plural forms of Homebrew jargon" do - expect(described_class.pluralize(1, "formula")).to eq("1 formula") - expect(described_class.pluralize(2, "formula")).to eq("2 formulae") - end - - it "pluralizes the last word of a string" do - expect(described_class.pluralize(1, "new formula")).to eq("1 new formula") - expect(described_class.pluralize(2, "new formula")).to eq("2 new formulae") - end - end - - describe "::comma_and" do - it "returns nil if given no arguments" do - expect(described_class.comma_and).to be nil - end - - it "returns the input as string if there is only one argument" do - expect(described_class.comma_and(1)).to eq("1") - end - - it "concatenates two items with “and”" do - expect(described_class.comma_and(1, 2)).to eq("1 and 2") - end - - it "concatenates all items with a comma and appends the last with “and”" do - expect(described_class.comma_and(1, 2, 3)).to eq("1, 2 and 3") - end - end end diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index cf1d45ec1d..c34ec720cf 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -152,13 +152,13 @@ def pretty_duration(s) if s > 59 m = s / 60 s %= 60 - res = Formatter.pluralize(m, "minute") + res = "#{m} #{"minute".pluralize(m)}" return res if s.zero? res << " " end - res << Formatter.pluralize(s, "second") + res << "#{s} #{"second".pluralize(s)}" end def interactive_shell(f = nil) diff --git a/Library/Homebrew/utils/formatter.rb b/Library/Homebrew/utils/formatter.rb index d8530414a0..b66570f74b 100644 --- a/Library/Homebrew/utils/formatter.rb +++ b/Library/Homebrew/utils/formatter.rb @@ -98,28 +98,4 @@ module Formatter output end - - def pluralize(count, singular, plural = nil, show_count: true) - return (show_count ? "#{count} #{singular}" : singular.to_s) if count == 1 - - *adjectives, noun = singular.to_s.split(" ") - - plural ||= { - "formula" => "formulae", - }.fetch(noun, "#{noun}s") - - words = adjectives.push(plural).join(" ") - - show_count ? "#{count} #{words}" : words - end - - def comma_and(*items) - # TODO: Remove when RuboCop 0.57.3 is released. - # False positive has been fixed and merged, but is not yet in a - # stable release: https://github.com/rubocop-hq/rubocop/pull/6038 - *items, last = items.map(&:to_s) # rubocop:disable Lint/ShadowedArgument - return last if items.empty? - - "#{items.join(", ")} and #{last}" - end end diff --git a/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/activesupport-5.2.1/lib/active_support/locale/en.yml b/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/activesupport-5.2.1/lib/active_support/locale/en.yml new file mode 100644 index 0000000000..c64b7598ee --- /dev/null +++ b/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/activesupport-5.2.1/lib/active_support/locale/en.yml @@ -0,0 +1,135 @@ +en: + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%Y-%m-%d" + short: "%b %d" + long: "%B %d, %Y" + + day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] + abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] + abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] + # Used in date_select and datetime_select. + order: + - year + - month + - day + + time: + formats: + default: "%a, %d %b %Y %H:%M:%S %z" + short: "%d %b %H:%M" + long: "%B %d, %Y %H:%M" + am: "am" + pm: "pm" + +# Used in array.to_sentence. + support: + array: + words_connector: ", " + two_words_connector: " and " + last_word_connector: ", and " + number: + # Used in NumberHelper.number_to_delimited() + # These are also the defaults for 'currency', 'percentage', 'precision', and 'human' + format: + # Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5) + separator: "." + # Delimits thousands (e.g. 1,000,000 is a million) (always in groups of three) + delimiter: "," + # Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00) + precision: 3 + # If set to true, precision will mean the number of significant digits instead + # of the number of decimal digits (1234 with precision 2 becomes 1200, 1.23543 becomes 1.2) + significant: false + # If set, the zeros after the decimal separator will always be stripped (eg.: 1.200 will be 1.2) + strip_insignificant_zeros: false + + # Used in NumberHelper.number_to_currency() + currency: + format: + # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00) + format: "%u%n" + unit: "$" + # These five are to override number.format and are optional + separator: "." + delimiter: "," + precision: 2 + significant: false + strip_insignificant_zeros: false + + # Used in NumberHelper.number_to_percentage() + percentage: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + format: "%n%" + + # Used in NumberHelper.number_to_rounded() + precision: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + # precision: + # significant: false + # strip_insignificant_zeros: false + + # Used in NumberHelper.number_to_human_size() and NumberHelper.number_to_human() + human: + format: + # These five are to override number.format and are optional + # separator: + delimiter: "" + precision: 3 + significant: true + strip_insignificant_zeros: true + # Used in number_to_human_size() + storage_units: + # Storage units output formatting. + # %u is the storage unit, %n is the number (default: 2 MB) + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + pb: "PB" + eb: "EB" + # Used in NumberHelper.number_to_human() + decimal_units: + format: "%n %u" + # Decimal units output formatting + # By default we will only quantify some of the exponents + # but the commented ones might be defined or overridden + # by the user. + units: + # femto: Quadrillionth + # pico: Trillionth + # nano: Billionth + # micro: Millionth + # mili: Thousandth + # centi: Hundredth + # deci: Tenth + unit: "" + # ten: + # one: Ten + # other: Tens + # hundred: Hundred + thousand: Thousand + million: Million + billion: Billion + trillion: Trillion + quadrillion: Quadrillion diff --git a/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/i18n-1.1.0/lib/i18n/core_ext/hash.rb b/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/i18n-1.1.0/lib/i18n/core_ext/hash.rb new file mode 100644 index 0000000000..895f41a43f --- /dev/null +++ b/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/i18n-1.1.0/lib/i18n/core_ext/hash.rb @@ -0,0 +1,29 @@ +class Hash + def slice(*keep_keys) + h = {} + keep_keys.each { |key| h[key] = fetch(key) if has_key?(key) } + h + end unless Hash.method_defined?(:slice) + + def except(*less_keys) + slice(*keys - less_keys) + end unless Hash.method_defined?(:except) + + def deep_symbolize_keys + inject({}) { |result, (key, value)| + value = value.deep_symbolize_keys if value.is_a?(Hash) + result[(key.to_sym rescue key) || key] = value + result + } + end unless Hash.method_defined?(:deep_symbolize_keys) + + # deep_merge_hash! by Stefan Rusterholz, see http://www.ruby-forum.com/topic/142809 + MERGER = proc do |key, v1, v2| + Hash === v1 && Hash === v2 ? v1.merge(v2, &MERGER) : v2 + end + + def deep_merge!(data) + merge!(data, &MERGER) + end unless Hash.method_defined?(:deep_merge!) +end + diff --git a/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/i18n-1.1.0/lib/i18n/core_ext/kernel/suppress_warnings.rb b/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/i18n-1.1.0/lib/i18n/core_ext/kernel/suppress_warnings.rb new file mode 100644 index 0000000000..eec1435a71 --- /dev/null +++ b/Library/Homebrew/vendor/bundle-standalone/ruby/2.3.0/gems/i18n-1.1.0/lib/i18n/core_ext/kernel/suppress_warnings.rb @@ -0,0 +1,8 @@ +module Kernel + def suppress_warnings + original_verbosity, $VERBOSE = $VERBOSE, nil + yield + ensure + $VERBOSE = original_verbosity + end +end