# frozen_string_literal: falserequire_relative'../optparse'## autoconf-like options.#classGem::OptionParser::AC<Gem::OptionParser# :stopdoc:privatedef_check_ac_args(name,block)unless/\A\w[-\w]*\z/=~nameraiseArgumentError,nameendunlessblockraiseArgumentError,"no block given",ParseError.filter_backtrace(caller)endendARG_CONV=proc{|val|val.nil??true:val}private_constant:ARG_CONVdef_ac_arg_enable(prefix,name,help_string,block)_check_ac_args(name,block)sdesc=[]ldesc=["--#{prefix}-#{name}"]desc=[help_string]q=name.downcaseac_block=proc{|val|block.call(ARG_CONV.call(val))}enable=Switch::PlacedArgument.new(nil,ARG_CONV,sdesc,ldesc,nil,desc,ac_block)disable=Switch::NoArgument.new(nil,proc{false},sdesc,ldesc,nil,desc,ac_block)top.append(enable,[],["enable-"+q],disable,['disable-'+q])enableend# :startdoc:public# Define <tt>--enable</tt> / <tt>--disable</tt> style option## Appears as <tt>--enable-<i>name</i></tt> in help message.defac_arg_enable(name,help_string,&block)_ac_arg_enable("enable",name,help_string,block)end# Define <tt>--enable</tt> / <tt>--disable</tt> style option## Appears as <tt>--disable-<i>name</i></tt> in help message.defac_arg_disable(name,help_string,&block)_ac_arg_enable("disable",name,help_string,block)end# Define <tt>--with</tt> / <tt>--without</tt> style option## Appears as <tt>--with-<i>name</i></tt> in help message.defac_arg_with(name,help_string,&block)_check_ac_args(name,block)sdesc=[]ldesc=["--with-#{name}"]desc=[help_string]q=name.downcasewith=Switch::PlacedArgument.new(*search(:atype,String),sdesc,ldesc,nil,desc,block)without=Switch::NoArgument.new(nil,proc{},sdesc,ldesc,nil,desc,block)top.append(with,[],["with-"+q],without,['without-'+q])withendend