module AWS::Core::OptionGrammar::ModuleMethods
def customize(config = [])
def customize(config = []) m = Class.new(self) supported_options = m.supported_options.inject({}) do |memo, opt| memo[opt.name] = opt memo end config.each do |option_config| if config.kind_of?(Hash) (name, value_desc) = option_config else (name, value_desc) = parse_option(option_config) end option = supported_options[name] || DefaultOption.new(name) option = option.extend_with_config(*value_desc) supported_options[option.name] = option end supported_ary = supported_options.values MetaUtils.extend_method(m, :supported_options) { supported_ary } supported_ruby_names = supported_ary.inject({}) do |memo, opt| memo[opt.ruby_name] = opt memo end MetaUtils.extend_method(m, :option) { |n| supported_ruby_names[n] } supported_ary.each do |opt| MetaUtils.extend_method(m, "validate_#{opt.ruby_name}") do |value| opt.validate(value) end end m end