Options internals no longer need to support switches
This commit is contained in:
		
							parent
							
								
									b14851903c
								
							
						
					
					
						commit
						750d7bb2c8
					
				@ -4,7 +4,8 @@ class Option
 | 
				
			|||||||
  attr_reader :name, :description, :flag
 | 
					  attr_reader :name, :description, :flag
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def initialize(name, description="")
 | 
					  def initialize(name, description="")
 | 
				
			||||||
    @name, @flag = split_name(name)
 | 
					    @name = name
 | 
				
			||||||
 | 
					    @flag = "--#{name}"
 | 
				
			||||||
    @description = description
 | 
					    @description = description
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -29,19 +30,6 @@ class Option
 | 
				
			|||||||
  def inspect
 | 
					  def inspect
 | 
				
			||||||
    "#<#{self.class.name}: #{flag.inspect}>"
 | 
					    "#<#{self.class.name}: #{flag.inspect}>"
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					 | 
				
			||||||
  private
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  def split_name(name)
 | 
					 | 
				
			||||||
    case name
 | 
					 | 
				
			||||||
    when /^[a-zA-Z]$/
 | 
					 | 
				
			||||||
      [name, "-#{name}"]
 | 
					 | 
				
			||||||
    when /^-[a-zA-Z]$/
 | 
					 | 
				
			||||||
      [name[1..1], name]
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
      [name, "--#{name}"]
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Options
 | 
					class Options
 | 
				
			||||||
@ -51,8 +39,6 @@ class Options
 | 
				
			|||||||
    options = new
 | 
					    options = new
 | 
				
			||||||
    array.each do |e|
 | 
					    array.each do |e|
 | 
				
			||||||
      case e
 | 
					      case e
 | 
				
			||||||
      when /^-[^-]+$/
 | 
					 | 
				
			||||||
        e[1..-1].split(//).each { |o| options << Option.new(o) }
 | 
					 | 
				
			||||||
      when /^--(.+)$/
 | 
					      when /^--(.+)$/
 | 
				
			||||||
        options << Option.new($1)
 | 
					        options << Option.new($1)
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
 | 
				
			|||||||
@ -23,12 +23,6 @@ class OptionTests < Homebrew::TestCase
 | 
				
			|||||||
    assert_empty @option.description
 | 
					    assert_empty @option.description
 | 
				
			||||||
    assert_equal "foo", Option.new("foo", "foo").description
 | 
					    assert_equal "foo", Option.new("foo", "foo").description
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					 | 
				
			||||||
  def test_preserves_short_options
 | 
					 | 
				
			||||||
    option = Option.new("-d")
 | 
					 | 
				
			||||||
    assert_equal "-d", option.flag
 | 
					 | 
				
			||||||
    assert_equal "d", option.name
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class OptionsTests < Homebrew::TestCase
 | 
					class OptionsTests < Homebrew::TestCase
 | 
				
			||||||
@ -108,11 +102,4 @@ class OptionsTests < Homebrew::TestCase
 | 
				
			|||||||
    option2 = Option.new("bar")
 | 
					    option2 = Option.new("bar")
 | 
				
			||||||
    assert_equal [option1, option2].sort, Options.create(array).sort
 | 
					    assert_equal [option1, option2].sort, Options.create(array).sort
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					 | 
				
			||||||
  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.create(array).sort
 | 
					 | 
				
			||||||
  end
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user