module AWS::Core::Inflection

def class_name(name)

def class_name(name)
  name.sub(/^(.)/) { |m| m.upcase }.
    gsub(/[-_]([a-z])/i) { |m| m[1,1].upcase }
end

def ruby_name aws_name

def ruby_name aws_name
  inflector = Hash.new do |hash,key|
    key.
      sub(/^.*:/, '').                          # strip namespace
      gsub(/([A-Z0-9]+)([A-Z][a-z])/, '\1_\2'). # split acronyms from words
      scan(/[a-z]+|\d+|[A-Z0-9]+[a-z]*/).       # split remaining words
      join('_').downcase                        # join parts _ and downcase
  end
  # add a few irregular inflections
  inflector['ETag'] = 'etag'
  inflector['s3Bucket'] = 's3_bucket'
  inflector['s3Key'] = 's3_key'
  inflector[aws_name]
end