module AWS::CloudFormation::StackOptions

def apply_disable_rollback options

def apply_disable_rollback options
  options[:disable_rollback] = options[:disable_rollback] == true
end

def apply_notification_arns options

def apply_notification_arns options
  if arns = options.delete(:notify)
    options[:notification_arns] = Array(arns).collect do |topic|
      topic.is_a?(SNS::Topic) ? topic.arn : topic
    end
  end
end

def apply_parameters options

def apply_parameters options
  if params = options[:parameters] and params.is_a?(Hash)
    options[:parameters] = params.inject([]) do |list,(key,value)|
      list << { :parameter_key => key.to_s, :parameter_value => value }
    end
  end
end

def apply_stack_name stack_name, options

def apply_stack_name stack_name, options
  options[:stack_name] = stack_name
end

def apply_template opts

def apply_template opts
  if template = opts.delete(:template)
    case template
    when String
      if template.match(/^http/)
        opts[:template_url] = template
      else
        opts[:template_body] = template
      end
    when URI then opts[:template_url] = template.to_s
    when S3::S3Object then opts[:template_body] = template.read
    else
      opts[:template_body] = template.to_json
    end
  end
end

def apply_timeout options

def apply_timeout options
  if timeout = options.delete(:timeout)
    options[:timeout_in_minutes] = timeout
  end
end