diff options
| author | Markus Reiter | 2016-10-03 04:03:26 +0200 |
|---|---|---|
| committer | GitHub | 2016-10-03 04:03:26 +0200 |
| commit | 35ee2831086e923e7fcaf75fb440b01312e3f9c5 (patch) | |
| tree | 6f3efd1eb351125333fbe10390bd3a9e5b7b87e0 /Library/Homebrew/cask/lib/hbc/dsl.rb | |
| parent | 7d31a70373edae4d8e78d91a4cbc05324bebc3ba (diff) | |
| parent | e2b3753fd91c47beeb3227a1c0df4c0dfa6026fc (diff) | |
| download | brew-1.0.6.tar.bz2 | |
Merge pull request #906 from reitermarkus/os-language1.0.6
Make `MacOS.language` less opinionated and add `language` stanza.
Diffstat (limited to 'Library/Homebrew/cask/lib/hbc/dsl.rb')
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/dsl.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/dsl.rb b/Library/Homebrew/cask/lib/hbc/dsl.rb index 83c0bf1fb..8e0a7715a 100644 --- a/Library/Homebrew/cask/lib/hbc/dsl.rb +++ b/Library/Homebrew/cask/lib/hbc/dsl.rb @@ -1,4 +1,5 @@ require "set" +require "locale" require "hbc/dsl/appcast" require "hbc/dsl/base" @@ -64,6 +65,7 @@ module Hbc :depends_on, :gpg, :homepage, + :language, :license, :name, :sha256, @@ -98,6 +100,43 @@ module Hbc @homepage ||= homepage end + def language(*args, default: false, &block) + if !args.empty? && block_given? + @language_blocks ||= {} + @language_blocks[args] = block + + return unless default + + unless @language_blocks.default.nil? + raise CaskInvalidError.new(token, "Only one default language may be defined") + end + + @language_blocks.default = block + else + language_eval + end + end + + def language_eval + return @language if instance_variable_defined?(:@language) + + if @language_blocks.nil? || @language_blocks.empty? + return @language = nil + end + + MacOS.languages.map(&Locale.method(:parse)).each do |locale| + key = @language_blocks.keys.detect { |strings| + strings.any? { |string| locale.include?(string) } + } + + next if key.nil? + + return @language = @language_blocks[key].call + end + + @language = @language_blocks.default.call + end + def url(*args, &block) url_given = !args.empty? || block_given? return @url unless url_given |
