aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cask/lib/hbc/dsl.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/cask/lib/hbc/dsl.rb')
-rw-r--r--Library/Homebrew/cask/lib/hbc/dsl.rb39
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