From dc1edf6bfc067fd1f4c9990a68b3763d00a29bfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Galv=C3=A3o?= Date: Mon, 28 May 2018 15:01:58 +0100 Subject: [PATCH 1/3] cask --language: have specific match always trump general --- Library/Homebrew/cask/lib/hbc/dsl.rb | 4 +--- Library/Homebrew/locale.rb | 5 +++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/cask/lib/hbc/dsl.rb b/Library/Homebrew/cask/lib/hbc/dsl.rb index 9d229e2880..652f37c193 100644 --- a/Library/Homebrew/cask/lib/hbc/dsl.rb +++ b/Library/Homebrew/cask/lib/hbc/dsl.rb @@ -134,9 +134,7 @@ module Hbc end MacOS.languages.map(&Locale.method(:parse)).each do |locale| - key = @language_blocks.keys.detect do |strings| - strings.any? { |string| locale.include?(string) } - end + key = locale.detect(@language_blocks.keys) next if key.nil? diff --git a/Library/Homebrew/locale.rb b/Library/Homebrew/locale.rb index c430d11b64..38860403fe 100644 --- a/Library/Homebrew/locale.rb +++ b/Library/Homebrew/locale.rb @@ -68,6 +68,11 @@ class Locale end alias == eql? + def detect(locale_groups) + locale_groups.detect { |locales| locales.any? { |locale| eql?(locale) } } || + locale_groups.detect { |locales| locales.any? { |locale| include?(locale) } } + end + def to_s [@language, @region, @script].compact.join("-") end From 81d467abbaa6410fc3734314b8a7605163d6c64f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Galv=C3=A3o?= Date: Mon, 28 May 2018 15:12:07 +0100 Subject: [PATCH 2/3] with-languages.rb: remove trailing whitespace --- .../test/support/fixtures/cask/Casks/with-languages.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/test/support/fixtures/cask/Casks/with-languages.rb b/Library/Homebrew/test/support/fixtures/cask/Casks/with-languages.rb index 90ff638468..76f2248274 100644 --- a/Library/Homebrew/test/support/fixtures/cask/Casks/with-languages.rb +++ b/Library/Homebrew/test/support/fixtures/cask/Casks/with-languages.rb @@ -1,6 +1,6 @@ cask 'with-languages' do version '1.2.3' - + language "zh" do sha256 "abc123" "zh-CN" @@ -13,6 +13,6 @@ cask 'with-languages' do url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip" homepage 'http://example.com/local-caffeine' - + app 'Caffeine.app' end From 1d3e8c5550a0c32a227f0cf3db97c2c0410fb886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Galv=C3=A3o?= Date: Sun, 3 Jun 2018 00:54:52 +0100 Subject: [PATCH 3/3] Add test for locale.detect --- Library/Homebrew/test/locale_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Library/Homebrew/test/locale_spec.rb b/Library/Homebrew/test/locale_spec.rb index aa2b122204..819a2f2757 100644 --- a/Library/Homebrew/test/locale_spec.rb +++ b/Library/Homebrew/test/locale_spec.rb @@ -72,4 +72,14 @@ describe Locale do expect(subject.eql?("zh_CN_Hans")).to be false end end + + describe "#detect" do + let(:locale_groups) { [["zh"], ["zh-TW"]] } + + it "finds best matching language code, independent of order" do + expect(described_class.new("zh", "TW", nil).detect(locale_groups)).to eql(["zh-TW"]) + expect(described_class.new("zh", "TW", nil).detect(locale_groups.reverse)).to eql(["zh-TW"]) + expect(described_class.new("zh", "CN", "Hans").detect(locale_groups)).to eql(["zh"]) + end + end end