From 268cd143bef42acd82b52dd39ba05a3beda86275 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Wed, 13 Aug 2014 11:09:57 -0500 Subject: [PATCH] Replace Options.coerce with an alternate constructor --- Library/Homebrew/dependable.rb | 2 +- Library/Homebrew/formula_installer.rb | 2 +- Library/Homebrew/options.rb | 31 +++++++++------------ Library/Homebrew/software_spec.rb | 2 +- Library/Homebrew/tab.rb | 4 +-- Library/Homebrew/test/test_build_options.rb | 4 +-- Library/Homebrew/test/test_options.rb | 12 +++----- 7 files changed, 24 insertions(+), 33 deletions(-) diff --git a/Library/Homebrew/dependable.rb b/Library/Homebrew/dependable.rb index d500cd0331..f1951e4c65 100644 --- a/Library/Homebrew/dependable.rb +++ b/Library/Homebrew/dependable.rb @@ -24,6 +24,6 @@ module Dependable end def options - Options.coerce(tags - RESERVED_TAGS) + Options.create(tags - RESERVED_TAGS) end end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 02e61587b3..d9e72702b0 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -465,7 +465,7 @@ class FormulaInstaller end def build_argv - opts = Options.coerce(sanitized_ARGV_options) + opts = Options.create(sanitized_ARGV_options) opts.concat(options) opts end diff --git a/Library/Homebrew/options.rb b/Library/Homebrew/options.rb index 86be67ea93..a612f27fef 100644 --- a/Library/Homebrew/options.rb +++ b/Library/Homebrew/options.rb @@ -53,6 +53,19 @@ class Options attr_reader :options protected :options + def self.create(array) + options = new + array.each do |e| + case e + when /^-[^-]+$/ + e[1..-1].split(//).each { |o| options << Option.new(o) } + else + options << Option.new(e) + end + end + options + end + def initialize(*args) @options = Set.new(*args) end @@ -113,22 +126,4 @@ class Options def inspect "#<#{self.class.name}: #{to_a.inspect}>" end - - def self.coerce(arg) - case arg - when Array - opts = new - arg.each do |a| - case a - when /^-[^-]+$/ - a[1..-1].split(//).each { |o| opts << Option.new(o) } - else - opts << Option.new(a) - end - end - opts - else - raise TypeError, "Cannot convert #{arg.inspect} to Options" - end - end end diff --git a/Library/Homebrew/software_spec.rb b/Library/Homebrew/software_spec.rb index e88975a733..9fda2cef96 100644 --- a/Library/Homebrew/software_spec.rb +++ b/Library/Homebrew/software_spec.rb @@ -34,7 +34,7 @@ class SoftwareSpec @bottle_specification = BottleSpecification.new @patches = [] @options = Options.new - @build = BuildOptions.new(Options.coerce(ARGV.options_only), options) + @build = BuildOptions.new(Options.create(ARGV.options_only), options) end def owner= owner diff --git a/Library/Homebrew/tab.rb b/Library/Homebrew/tab.rb index 202c02302f..c5286ea4ed 100644 --- a/Library/Homebrew/tab.rb +++ b/Library/Homebrew/tab.rb @@ -106,11 +106,11 @@ class Tab < OpenStruct end def used_options - Options.coerce(super) + Options.create(super) end def unused_options - Options.coerce(super) + Options.create(super) end def cxxstdlib diff --git a/Library/Homebrew/test/test_build_options.rb b/Library/Homebrew/test/test_build_options.rb index a0c52da81a..7d2c952d90 100644 --- a/Library/Homebrew/test/test_build_options.rb +++ b/Library/Homebrew/test/test_build_options.rb @@ -4,8 +4,8 @@ require "options" class BuildOptionsTests < Homebrew::TestCase def setup - args = Options.coerce(%w(--with-foo --with-bar --without-qux)) - opts = Options.coerce(%w(--with-foo --with-bar --without-baz --without-qux)) + args = Options.create(%w(--with-foo --with-bar --without-qux)) + opts = Options.create(%w(--with-foo --with-bar --without-baz --without-qux)) @build = BuildOptions.new(args, opts) end diff --git a/Library/Homebrew/test/test_options.rb b/Library/Homebrew/test/test_options.rb index 250360a307..264ef772aa 100644 --- a/Library/Homebrew/test/test_options.rb +++ b/Library/Homebrew/test/test_options.rb @@ -132,22 +132,18 @@ class OptionsTests < Homebrew::TestCase assert_equal [foo, bar, baz].sort, (@options | options).to_a.sort end - def test_coerce_with_array + def test_create_with_array array = %w{--foo --bar} option1 = Option.new("foo") option2 = Option.new("bar") - assert_equal [option1, option2].sort, Options.coerce(array).to_a.sort + assert_equal [option1, option2].sort, Options.create(array).to_a.sort end - def test_coerce_raises_for_inappropriate_types - assert_raises(TypeError) { Options.coerce(1) } - end - - def test_coerce_splits_multiple_switches_with_single_dash + def test_create_splits_multiple_switches_with_single_dash array = %w{-vd} verbose = Option.new("-v") debug = Option.new("-d") - assert_equal [verbose, debug].sort, Options.coerce(array).to_a.sort + assert_equal [verbose, debug].sort, Options.create(array).to_a.sort end def test_copies_do_not_share_underlying_collection