diff --git a/Library/Homebrew/cask/cmd/install.rb b/Library/Homebrew/cask/cmd/install.rb index 71d39f491f..f5dd9d57f0 100644 --- a/Library/Homebrew/cask/cmd/install.rb +++ b/Library/Homebrew/cask/cmd/install.rb @@ -85,7 +85,7 @@ module Cask if dry_run if (casks_to_install = casks.reject(&:installed?).presence) - plural = "cask".pluralize(casks_to_install.count) + plural = ::Utils::Inflection.number(casks_to_install.count, "cask") ohai "Would install #{casks_to_install.count} #{plural}:" puts casks_to_install.map(&:full_name).join(" ") end @@ -97,7 +97,7 @@ module Cask .map(&:name) next if dep_names.blank? - plural = "dependency".pluralize(dep_names.count) + plural = ::Utils::Inflection.number(dep_names.count, "dependenc", "ies", "y") ohai "Would install #{dep_names.count} #{plural} for #{cask.full_name}:" puts dep_names.join(" ") end diff --git a/Library/Homebrew/cask/cmd/uninstall.rb b/Library/Homebrew/cask/cmd/uninstall.rb index 1ab2c8ce2d..36a8c5d758 100644 --- a/Library/Homebrew/cask/cmd/uninstall.rb +++ b/Library/Homebrew/cask/cmd/uninstall.rb @@ -46,7 +46,7 @@ module Cask next if (versions = cask.versions).empty? puts <<~EOS - #{cask} #{versions.to_sentence} #{"is".pluralize(versions.count)} still installed. + #{cask} #{versions.to_sentence} #{::Utils::Inflection.number(versions.count, "", "are", "is")} still installed. Remove #{(versions.count == 1) ? "it" : "them all"} with `brew uninstall --cask --force #{cask}`. EOS end diff --git a/Library/Homebrew/cask/cmd/upgrade.rb b/Library/Homebrew/cask/cmd/upgrade.rb index b3c87a60d8..a3095464c9 100644 --- a/Library/Homebrew/cask/cmd/upgrade.rb +++ b/Library/Homebrew/cask/cmd/upgrade.rb @@ -121,7 +121,7 @@ module Cask if manual_installer_casks.present? count = manual_installer_casks.count - ofail "Not upgrading #{count} `installer manual` #{"cask".pluralize(count)}." + ofail "Not upgrading #{count} `installer manual` #{::Utils::Inflection.number(versions.count, "cask")}." puts manual_installer_casks.map(&:to_s) outdated_casks -= manual_installer_casks end @@ -142,7 +142,7 @@ module Cask end verb = dry_run ? "Would upgrade" : "Upgrading" - oh1 "#{verb} #{outdated_casks.count} outdated #{"package".pluralize(outdated_casks.count)}:" + oh1 "#{verb} #{outdated_casks.count} outdated #{::Utils::Inflection.number(outdated_casks.count, "package")}:" caught_exceptions = [] diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index d3edd13e4b..70a9ebaeae 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -12,6 +12,7 @@ require "utils/git" require "utils/git_repository" require "utils/github" require "utils/gzip" +require "utils/inflection" require "utils/inreplace" require "utils/link" require "utils/popen" diff --git a/Library/Homebrew/utils/inflection.rb b/Library/Homebrew/utils/inflection.rb new file mode 100644 index 0000000000..2e2bca8f25 --- /dev/null +++ b/Library/Homebrew/utils/inflection.rb @@ -0,0 +1,18 @@ +# typed: strict +# frozen_string_literal: true + +module Utils + # Inflection utility methods, as a lightweight alternative to `ActiveSupport::Inflector``. + # + # @api private + module Inflection + extend T::Sig + + # Combines `stem`` with the `singular`` or `plural` suffix based on `count`. + sig { params(count: Integer, stem: String, plural: String, singular: String).returns(String) } + def self.number(count, stem, plural = "s", singular = "") + suffix = (count == 1) ? singular : plural + "#{stem}#{suffix}" + end + end +end