class Regexp::Parser
def options_group(token)
def options_group(token) positive, negative = token.text.split('-', 2) negative ||= '' self.switching_options = token.token.equal?(:options_switch) opt_changes = {} new_active_opts = active_opts.dup MOD_FLAGS.each do |flag| if positive.include?(flag.to_s) opt_changes[flag] = new_active_opts[flag] = true end if negative.include?(flag.to_s) opt_changes[flag] = false new_active_opts.delete(flag) end end if (enc_flag = positive.reverse[/[adu]/]) enc_flag = enc_flag.to_sym (ENC_FLAGS - [enc_flag]).each do |other| opt_changes[other] = false if new_active_opts[other] new_active_opts.delete(other) end opt_changes[enc_flag] = new_active_opts[enc_flag] = true end options_stack << new_active_opts options_group = Group::Options.new(token, active_opts) options_group.option_changes = opt_changes nest(options_group) end