module Crack::Util

def snake_case(str)

def snake_case(str)
  return str.downcase if str =~ /^[A-Z]+$/
  str.gsub(/([A-Z]+)(?=[A-Z][a-z]?)|\B[A-Z]/, '_\&') =~ /_*(.*)/
  return $+.downcase
end

def to_xml_attributes(hash)

def to_xml_attributes(hash)
  hash.map do |k,v|
    %{#{Crack::Util.snake_case(k.to_s).sub(/^(.{1,1})/) { |m| m.downcase }}="#{v.to_s.gsub('"', '"')}"}
  end.join(' ')
end