def dynamically_extend_via_commandline_modes!
self.breadth_first_modes = modes.dup
size = modes.size
loop do
modes.each do |mode|
arg = argv.first && %r/^#{ argv.first }/
if arg and mode.name =~ arg
argv.shift
modes.clear()
breadth_first_modes.clear()
evaluate(&mode)
self.breadth_first_modes = modes.dup
depth_first_modes[mode.name] = mode
break
end
end
arg = argv.first && %r/^#{ argv.first }/
more_modes = (
!modes.empty? and modes.any?{|mode| arg && mode.name =~ arg}
)
break unless more_modes
end
self.modes = depth_first_modes.dup
end