diff options
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 |
