94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
# File 'lib/brigadier.rb', line 94
def toggle(name, description, args = {}, &block)
new_aliases = []
new_inverse_aliases = []
aliases = args.fetch(:aliases, [])
modifiers = %w( -- - )
inverse_modifiers = %w( -no- --no- -not- --not- -no_ --no_ -not_ --not_ )
([ *name ] + aliases).each do |n|
alt_name = n.gsub(/[ -]/, '_')
modifiers.each do |modifier|
new_aliases << '%s%s' % [ modifier, n]
new_aliases << '%s%s' % [ modifier, alt_name ]
end
inverse_modifiers.each do |modifier|
new_inverse_aliases << '%s%s' % [ modifier, n]
new_inverse_aliases << '%s%s' % [ modifier, alt_name ]
end
end
new_aliases.uniq!
new_inverse_aliases.uniq!
all_aliases = [ new_aliases + new_inverse_aliases ].uniq.flatten
args[:aliases] = new_aliases
args[:inverse_aliases] = new_inverse_aliases
toggles[all_aliases] = Parameters::Toggle.new(name, description, args, block)
end
|