File tree Expand file tree Collapse file tree 2 files changed +25
-13
lines changed Expand file tree Collapse file tree 2 files changed +25
-13
lines changed Original file line number Diff line number Diff line change @@ -82,14 +82,7 @@ def human_name
82
82
end
83
83
84
84
def usage ( padding = 0 )
85
- sample = if banner && !banner . to_s . empty?
86
- "#{ switch_name } =#{ banner } " . dup
87
- else
88
- switch_name
89
- end
90
-
91
- sample = "[#{ sample } ]" . dup unless required?
92
- sample << ", [#{ dasherize ( 'no-' + human_name ) } ]" if inverse?
85
+ sample = [ sample_banner , inverse_sample ] . compact . join ( ", " )
93
86
94
87
if aliases . empty?
95
88
( " " * padding ) << sample
@@ -98,11 +91,6 @@ def usage(padding = 0)
98
91
end
99
92
end
100
93
101
- def inverse?
102
- return false if ( name == "force" ) || name . start_with? ( "no-" )
103
- boolean? && @inverse . nil? || @inverse . eql? ( true )
104
- end
105
-
106
94
VALID_TYPES . each do |type |
107
95
class_eval <<-RUBY , __FILE__ , __LINE__ + 1
108
96
def #{ type } ?
@@ -113,6 +101,26 @@ def #{type}?
113
101
114
102
protected
115
103
104
+ def sample_banner
105
+ sample_banner = if banner && !banner . to_s . empty?
106
+ "#{ switch_name } =#{ banner } " . dup
107
+ else
108
+ switch_name
109
+ end
110
+ required? ? sample_banner : "[#{ sample_banner } ]"
111
+ end
112
+
113
+ def inverse_sample
114
+ return unless boolean? && name !~ /^(force|no-.*)$/
115
+
116
+ case @inverse
117
+ when Symbol , String
118
+ "[#{ dasherize ( @inverse . to_s ) } ]"
119
+ when nil , true
120
+ "[#{ dasherize ( 'no-' + human_name ) } ]"
121
+ end
122
+ end
123
+
116
124
def validate!
117
125
raise ArgumentError , "An option cannot be boolean and required." if boolean? && required?
118
126
validate_default_type!
Original file line number Diff line number Diff line change @@ -123,6 +123,10 @@ def option(name, options = {})
123
123
expect ( option ( "bar" , type : :boolean , :inverse => false ) . usage ) . to_not include ( "[--no-bar]" )
124
124
end
125
125
126
+ it "allow to override the inverse option" do
127
+ expect ( option ( "colorful" , type : :boolean , :inverse => :monochromatic ) . usage ) . to include ( "[--monochromatic]" )
128
+ end
129
+
126
130
it "creates the inversion flag by default" do
127
131
expect ( option ( "bar" , type : :boolean ) . usage ) . to include ( "[--no-bar]" )
128
132
end
You can’t perform that action at this time.
0 commit comments