Draft implementation to replace ActiveSupport inflections

This commit is contained in:
Douglas Eichelberger 2023-02-22 20:59:05 -08:00
parent 6db7732fa3
commit 0438a3a538
5 changed files with 24 additions and 5 deletions

View File

@ -85,7 +85,7 @@ module Cask
if dry_run if dry_run
if (casks_to_install = casks.reject(&:installed?).presence) 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}:" ohai "Would install #{casks_to_install.count} #{plural}:"
puts casks_to_install.map(&:full_name).join(" ") puts casks_to_install.map(&:full_name).join(" ")
end end
@ -97,7 +97,7 @@ module Cask
.map(&:name) .map(&:name)
next if dep_names.blank? 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}:" ohai "Would install #{dep_names.count} #{plural} for #{cask.full_name}:"
puts dep_names.join(" ") puts dep_names.join(" ")
end end

View File

@ -46,7 +46,7 @@ module Cask
next if (versions = cask.versions).empty? next if (versions = cask.versions).empty?
puts <<~EOS 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}`. Remove #{(versions.count == 1) ? "it" : "them all"} with `brew uninstall --cask --force #{cask}`.
EOS EOS
end end

View File

@ -121,7 +121,7 @@ module Cask
if manual_installer_casks.present? if manual_installer_casks.present?
count = manual_installer_casks.count 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) puts manual_installer_casks.map(&:to_s)
outdated_casks -= manual_installer_casks outdated_casks -= manual_installer_casks
end end
@ -142,7 +142,7 @@ module Cask
end end
verb = dry_run ? "Would upgrade" : "Upgrading" 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 = [] caught_exceptions = []

View File

@ -12,6 +12,7 @@ require "utils/git"
require "utils/git_repository" require "utils/git_repository"
require "utils/github" require "utils/github"
require "utils/gzip" require "utils/gzip"
require "utils/inflection"
require "utils/inreplace" require "utils/inreplace"
require "utils/link" require "utils/link"
require "utils/popen" require "utils/popen"

View File

@ -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