Skip to content
Snippets Groups Projects
Commit a61c3615 authored by Mike McQuaid's avatar Mike McQuaid
Browse files

Revert "Replace Options.coerce with an alternate constructor"

This reverts commit 8d2ef974a3a87bf4207f71ccb8a7b4776e16a016.
parent f93a9aaf
No related branches found
No related tags found
No related merge requests found
......@@ -24,6 +24,6 @@ module Dependable
end
def options
Options.create(tags - RESERVED_TAGS)
Options.coerce(tags - RESERVED_TAGS)
end
end
......@@ -465,7 +465,7 @@ class FormulaInstaller
end
def build_argv
opts = Options.create(sanitized_ARGV_options)
opts = Options.coerce(sanitized_ARGV_options)
opts.concat(options)
opts
end
......
......@@ -53,19 +53,6 @@ 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
......@@ -126,4 +113,22 @@ 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
......@@ -34,7 +34,7 @@ class SoftwareSpec
@bottle_specification = BottleSpecification.new
@patches = []
@options = Options.new
@build = BuildOptions.new(Options.create(ARGV.options_only), options)
@build = BuildOptions.new(Options.coerce(ARGV.options_only), options)
end
def owner= owner
......
......@@ -106,11 +106,11 @@ class Tab < OpenStruct
end
def used_options
Options.create(super)
Options.coerce(super)
end
def unused_options
Options.create(super)
Options.coerce(super)
end
def cxxstdlib
......
......@@ -4,8 +4,8 @@ require "options"
class BuildOptionsTests < Homebrew::TestCase
def setup
args = Options.create(%w(--with-foo --with-bar --without-qux))
opts = Options.create(%w(--with-foo --with-bar --without-baz --without-qux))
args = Options.coerce(%w(--with-foo --with-bar --without-qux))
opts = Options.coerce(%w(--with-foo --with-bar --without-baz --without-qux))
@build = BuildOptions.new(args, opts)
end
......
......@@ -132,18 +132,22 @@ class OptionsTests < Homebrew::TestCase
assert_equal [foo, bar, baz].sort, (@options | options).to_a.sort
end
def test_create_with_array
def test_coerce_with_array
array = %w{--foo --bar}
option1 = Option.new("foo")
option2 = Option.new("bar")
assert_equal [option1, option2].sort, Options.create(array).to_a.sort
assert_equal [option1, option2].sort, Options.coerce(array).to_a.sort
end
def test_create_splits_multiple_switches_with_single_dash
def test_coerce_raises_for_inappropriate_types
assert_raises(TypeError) { Options.coerce(1) }
end
def test_coerce_splits_multiple_switches_with_single_dash
array = %w{-vd}
verbose = Option.new("-v")
debug = Option.new("-d")
assert_equal [verbose, debug].sort, Options.create(array).to_a.sort
assert_equal [verbose, debug].sort, Options.coerce(array).to_a.sort
end
def test_copies_do_not_share_underlying_collection
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment