diff options
| author | Markus Reiter | 2016-09-25 22:13:44 +0200 |
|---|---|---|
| committer | Markus Reiter | 2016-10-03 02:34:53 +0200 |
| commit | bc2d676b6f590d0ddd2987699624f6718384b641 (patch) | |
| tree | 88262f9ea0994985ac3a446a01ccff3fc5538bc9 /Library | |
| parent | 546a91f78e67939e49df4984562f02b25e68aa72 (diff) | |
| download | brew-bc2d676b6f590d0ddd2987699624f6718384b641.tar.bz2 | |
Refactor logic to always choose first matched language.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/dsl.rb | 36 | ||||
| -rw-r--r-- | Library/Homebrew/cask/test/cask/dsl_test.rb | 6 |
2 files changed, 29 insertions, 13 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/dsl.rb b/Library/Homebrew/cask/lib/hbc/dsl.rb index 624d62a76..bae395726 100644 --- a/Library/Homebrew/cask/lib/hbc/dsl.rb +++ b/Library/Homebrew/cask/lib/hbc/dsl.rb @@ -101,27 +101,37 @@ module Hbc def language(*args, &block) if !args.empty? && block_given? - args.each do |arg| - MacOS.languages.each_with_index do |l, index| - next unless arg == :default || l.match(arg) - next unless @language.nil? || @language[:level].nil? || @language[:level] > index - @language = { - block: block, - level: index, - } - end - end + @language_blocks ||= {} + @language_blocks[args] = block else language_eval @language end end - def language_eval - if @language.is_a?(Hash) && @language.key?(:block) - @language = @language[:block].call + return if instance_variable_defined?(:@language) + + return unless instance_variable_defined?(:@language_blocks) + + default_key = @language_blocks.keys.detect { |key| key.include?(:default) } + + MacOS.languages.each do |language| + @language_blocks.each do |regexes_or_strings, block| + if regexes_or_strings.include?(:default) + regexes_or_strings = regexes_or_strings - [:default] + [%r{^en}] + end + + case language + when *regexes_or_strings + @language = block.call + return + end + end end + + # fallback to :default + @language = default_key.nil? ? nil : @language_blocks[default_key].call end def url(*args, &block) diff --git a/Library/Homebrew/cask/test/cask/dsl_test.rb b/Library/Homebrew/cask/test/cask/dsl_test.rb index 1e13d49f3..f6fca3d2d 100644 --- a/Library/Homebrew/cask/test/cask/dsl_test.rb +++ b/Library/Homebrew/cask/test/cask/dsl_test.rb @@ -148,6 +148,12 @@ describe Hbc::DSL do MacOS.stubs(languages: ["THIRD_LANGUAGE"]) cask.call.language.must_equal :default + + MacOS.stubs(languages: ["THIRD_LANGUAGE", "SECOND_LANGUAGE", "FIRST_LANGUAGE"]) + cask.call.language.must_equal :second + + MacOS.stubs(languages: ["THIRD_LANGUAGE", "FIRST_LANGUAGE", "SECOND_LANGUAGE"]) + cask.call.language.must_equal :first end end |
