aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMarkus Reiter2017-03-11 23:35:33 +0100
committerGitHub2017-03-11 23:35:33 +0100
commit7a8d782365b615e066bead9b4829f6fce7f375df (patch)
tree0c6716cdd000e2f45f823450faecf798db957426 /Library
parent666ab1438c0aba8d4c0f4b540a5ccdba485f0eca (diff)
parent44d367edca03acaa737a3156d05bf462f79f0fc3 (diff)
downloadbrew-7a8d782365b615e066bead9b4829f6fce7f375df.tar.bz2
Merge pull request #2314 from reitermarkus/formatter-pluralize
Replace `#plural` by `Formatter::pluralize`.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/internal_audit_modified_casks.rb4
-rw-r--r--Library/Homebrew/cmd/info.rb2
-rw-r--r--Library/Homebrew/cmd/linkapps.rb2
-rw-r--r--Library/Homebrew/cmd/tap-info.rb10
-rw-r--r--Library/Homebrew/cmd/unlinkapps.rb2
-rw-r--r--Library/Homebrew/cmd/update-report.rb2
-rw-r--r--Library/Homebrew/cmd/upgrade.rb4
-rw-r--r--Library/Homebrew/compat/utils.rb5
-rw-r--r--Library/Homebrew/dev-cmd/audit.rb4
-rw-r--r--Library/Homebrew/tap.rb4
-rw-r--r--Library/Homebrew/test/formatter_spec.rb23
-rw-r--r--Library/Homebrew/test/utils_spec.rb7
-rw-r--r--Library/Homebrew/utils.rb8
-rw-r--r--Library/Homebrew/utils/formatter.rb14
14 files changed, 60 insertions, 31 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/cli/internal_audit_modified_casks.rb b/Library/Homebrew/cask/lib/hbc/cli/internal_audit_modified_casks.rb
index 3b46bffe4..dec3eaa87 100644
--- a/Library/Homebrew/cask/lib/hbc/cli/internal_audit_modified_casks.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli/internal_audit_modified_casks.rb
@@ -83,7 +83,7 @@ module Hbc
@modified_casks = modified_cask_files.map { |f| Hbc.load(f) }
if @modified_casks.any?
num_modified = @modified_casks.size
- ohai "#{num_modified} modified cask#{plural(num_modified)}: " \
+ ohai "#{Formatter.pluralize(num_modified, "modified cask")}: " \
"#{@modified_casks.join(" ")}"
end
@modified_casks
@@ -120,7 +120,7 @@ module Hbc
def report_failures
return if failed_casks.empty?
num_failed = failed_casks.size
- odie "audit failed for #{num_failed} cask#{plural(num_failed)}: " \
+ odie "audit failed for #{Formatter.pluralize(num_failed, "cask")}: " \
"#{failed_casks.join(" ")}"
end
diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb
index b06d99466..b7de0005c 100644
--- a/Library/Homebrew/cmd/info.rb
+++ b/Library/Homebrew/cmd/info.rb
@@ -43,7 +43,7 @@ module Homebrew
if ARGV.named.empty?
if HOMEBREW_CELLAR.exist?
count = Formula.racks.length
- puts "#{count} keg#{plural(count)}, #{HOMEBREW_CELLAR.abv}"
+ puts "#{Formatter.pluralize(count, "keg")}, #{HOMEBREW_CELLAR.abv}"
end
else
ARGV.named.each_with_index do |f, i|
diff --git a/Library/Homebrew/cmd/linkapps.rb b/Library/Homebrew/cmd/linkapps.rb
index 7dd1a6b93..8713b609e 100644
--- a/Library/Homebrew/cmd/linkapps.rb
+++ b/Library/Homebrew/cmd/linkapps.rb
@@ -67,7 +67,7 @@ module Homebrew
if link_count.zero?
puts "No apps linked to #{target_dir}" if ARGV.verbose?
else
- puts "Linked #{link_count} app#{plural(link_count)} to #{target_dir}"
+ puts "Linked #{Formatter.pluralize(link_count, "app")} to #{target_dir}"
end
end
diff --git a/Library/Homebrew/cmd/tap-info.rb b/Library/Homebrew/cmd/tap-info.rb
index 225b70097..b710fcf55 100644
--- a/Library/Homebrew/cmd/tap-info.rb
+++ b/Library/Homebrew/cmd/tap-info.rb
@@ -50,11 +50,11 @@ module Homebrew
pinned_count += 1 if tap.pinned?
private_count += 1 if tap.private?
end
- info = "#{tap_count} tap#{plural(tap_count)}"
+ info = Formatter.pluralize(tap_count, "tap").to_s
info += ", #{pinned_count} pinned"
info += ", #{private_count} private"
- info += ", #{formula_count} formula#{plural(formula_count, "e")}"
- info += ", #{command_count} command#{plural(command_count)}"
+ info += ", #{Formatter.pluralize(formula_count, "formula")}"
+ info += ", #{Formatter.pluralize(command_count, "command")}"
info += ", #{Tap::TAP_DIRECTORY.abv}" if Tap::TAP_DIRECTORY.directory?
puts info
else
@@ -65,10 +65,10 @@ module Homebrew
info += tap.pinned? ? "pinned" : "unpinned"
info += ", private" if tap.private?
if (formula_count = tap.formula_files.size) > 0
- info += ", #{formula_count} formula#{plural(formula_count, "e")}"
+ info += ", #{Formatter.pluralize(formula_count, "formula")}"
end
if (command_count = tap.command_files.size) > 0
- info += ", #{command_count} command#{plural(command_count)}"
+ info += ", #{Formatter.pluralize(command_count, "command")}"
end
info += ", no formulae/commands" if (formula_count + command_count).zero?
info += "\n#{tap.path} (#{tap.path.abv})"
diff --git a/Library/Homebrew/cmd/unlinkapps.rb b/Library/Homebrew/cmd/unlinkapps.rb
index b2ba458bf..7cae97e27 100644
--- a/Library/Homebrew/cmd/unlinkapps.rb
+++ b/Library/Homebrew/cmd/unlinkapps.rb
@@ -65,7 +65,7 @@ module Homebrew
puts "No apps unlinked from #{target_dir}" if ARGV.verbose?
else
n = ObserverPathnameExtension.total
- puts "Unlinked #{n} app#{plural(n)} from #{target_dir}"
+ puts "Unlinked #{Formatter.pluralize(n, "app")} from #{target_dir}"
end
end
diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb
index 361e0ffc1..c13d82090 100644
--- a/Library/Homebrew/cmd/update-report.rb
+++ b/Library/Homebrew/cmd/update-report.rb
@@ -80,7 +80,7 @@ module Homebrew
unless updated_taps.empty?
update_preinstall_header
- puts "Updated #{updated_taps.size} tap#{plural(updated_taps.size)} " \
+ puts "Updated #{Formatter.pluralize(updated_taps.size, "tap")} " \
"(#{updated_taps.join(", ")})."
updated = true
end
diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb
index ce892f85c..cea77ad29 100644
--- a/Library/Homebrew/cmd/upgrade.rb
+++ b/Library/Homebrew/cmd/upgrade.rb
@@ -66,12 +66,12 @@ module Homebrew
if formulae_to_install.empty?
oh1 "No packages to upgrade"
else
- oh1 "Upgrading #{formulae_to_install.length} outdated package#{plural(formulae_to_install.length)}, with result:"
+ oh1 "Upgrading #{Formatter.pluralize(formulae_to_install.length, "outdated package")}, with result:"
puts formulae_to_install.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", "
end
unless upgrade_pinned? || pinned.empty?
- oh1 "Not upgrading #{pinned.length} pinned package#{plural(pinned.length)}:"
+ oh1 "Not upgrading #{Formatter.pluralize(pinned.length, "pinned package")}:"
puts pinned.map { |f| "#{f.full_specified_name} #{f.pkg_version}" } * ", "
end
diff --git a/Library/Homebrew/compat/utils.rb b/Library/Homebrew/compat/utils.rb
index ed6063472..56b0824ba 100644
--- a/Library/Homebrew/compat/utils.rb
+++ b/Library/Homebrew/compat/utils.rb
@@ -21,3 +21,8 @@ def puts_columns(items)
odeprecated "puts_columns", "puts Formatter.columns"
puts Formatter.columns(items)
end
+
+def plural(n, s = "s")
+ odeprecated "#plural", "Formatter.pluralize"
+ n == 1 ? "" : s
+end
diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb
index cd55cdf4c..c1a89a0a5 100644
--- a/Library/Homebrew/dev-cmd/audit.rb
+++ b/Library/Homebrew/dev-cmd/audit.rb
@@ -91,9 +91,7 @@ module Homebrew
return if problem_count.zero?
- problems = "problem" + plural(problem_count)
- formulae = "formula" + plural(formula_count, "e")
- ofail "#{problem_count} #{problems} in #{formula_count} #{formulae}"
+ ofail "#{Formatter.pluralize(problem_count, "problem")} in #{Formatter.pluralize(formula_count, "formula")}"
end
end
diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb
index f071904a4..56e06834d 100644
--- a/Library/Homebrew/tap.rb
+++ b/Library/Homebrew/tap.rb
@@ -239,7 +239,7 @@ class Tap
link_completions_and_manpages
formula_count = formula_files.size
- puts "Tapped #{formula_count} formula#{plural(formula_count, "e")} (#{path.abv})" unless quiet
+ puts "Tapped #{Formatter.pluralize(formula_count, "formula")} (#{path.abv})" unless quiet
Descriptions.cache_formulae(formula_names)
return if options[:clone_target]
@@ -273,7 +273,7 @@ class Tap
Utils::Link.unlink_completions(path)
path.rmtree
path.parent.rmdir_if_possible
- puts "Untapped #{formula_count} formula#{plural(formula_count, "e")}"
+ puts "Untapped #{Formatter.pluralize(formula_count, "formula")}"
clear_cache
end
diff --git a/Library/Homebrew/test/formatter_spec.rb b/Library/Homebrew/test/formatter_spec.rb
index e8bd34416..6357853d8 100644
--- a/Library/Homebrew/test/formatter_spec.rb
+++ b/Library/Homebrew/test/formatter_spec.rb
@@ -52,4 +52,27 @@ 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
end
diff --git a/Library/Homebrew/test/utils_spec.rb b/Library/Homebrew/test/utils_spec.rb
index 90eed7d88..314c299a8 100644
--- a/Library/Homebrew/test/utils_spec.rb
+++ b/Library/Homebrew/test/utils_spec.rb
@@ -219,13 +219,6 @@ describe "globally-scoped helper methods" do
end
end
- specify "#plural" do
- expect(plural(1)).to eq("")
- expect(plural(0)).to eq("s")
- expect(plural(42)).to eq("s")
- expect(plural(42, "")).to eq("")
- end
-
specify "#disk_usage_readable" do
expect(disk_usage_readable(1)).to eq("1B")
expect(disk_usage_readable(1000)).to eq("1000B")
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb
index 8f897de17..46a8cc68e 100644
--- a/Library/Homebrew/utils.rb
+++ b/Library/Homebrew/utils.rb
@@ -131,16 +131,12 @@ def pretty_duration(s)
if s > 59
m = s / 60
s %= 60
- res = "#{m} minute#{plural m}"
+ res = Formatter.pluralize(m, "minute")
return res if s.zero?
res << " "
end
- res + "#{s} second#{plural s}"
-end
-
-def plural(n, s = "s")
- n == 1 ? "" : s
+ res << Formatter.pluralize(s, "second")
end
def interactive_shell(f = nil)
diff --git a/Library/Homebrew/utils/formatter.rb b/Library/Homebrew/utils/formatter.rb
index 8a9afb9af..099b1c6d3 100644
--- a/Library/Homebrew/utils/formatter.rb
+++ b/Library/Homebrew/utils/formatter.rb
@@ -90,4 +90,18 @@ module Formatter
output
end
+
+ def pluralize(count, singular, plural = nil)
+ return "#{count} #{singular}" if count == 1
+
+ *adjectives, noun = singular.split(" ")
+
+ plural ||= {
+ "formula" => "formulae",
+ }.fetch(noun, "#{noun}s")
+
+ words = adjectives << plural
+
+ "#{count} #{words.join(" ")}"
+ end
end