Merge pull request #4224 from vitorgalvao/fix-language-bug

HBC: Make language stanza order not matter
This commit is contained in:
Vítor Galvão 2018-06-04 00:55:45 +01:00 committed by GitHub
commit b088302e11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 18 additions and 5 deletions

View File

@ -134,9 +134,7 @@ module Hbc
end end
MacOS.languages.map(&Locale.method(:parse)).each do |locale| MacOS.languages.map(&Locale.method(:parse)).each do |locale|
key = @language_blocks.keys.detect do |strings| key = locale.detect(@language_blocks.keys)
strings.any? { |string| locale.include?(string) }
end
next if key.nil? next if key.nil?

View File

@ -68,6 +68,11 @@ class Locale
end end
alias == eql? 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 def to_s
[@language, @region, @script].compact.join("-") [@language, @region, @script].compact.join("-")
end end

View File

@ -72,4 +72,14 @@ describe Locale do
expect(subject.eql?("zh_CN_Hans")).to be false expect(subject.eql?("zh_CN_Hans")).to be false
end end
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 end

View File

@ -1,6 +1,6 @@
cask 'with-languages' do cask 'with-languages' do
version '1.2.3' version '1.2.3'
language "zh" do language "zh" do
sha256 "abc123" sha256 "abc123"
"zh-CN" "zh-CN"
@ -13,6 +13,6 @@ cask 'with-languages' do
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip" url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
homepage 'http://example.com/local-caffeine' homepage 'http://example.com/local-caffeine'
app 'Caffeine.app' app 'Caffeine.app'
end end