class Symbol

  # Generate a unique symbol.
  #
  #   Symbol.generate => :-1
  #
  # If +key+ is given the new symbol will be prefixed with it.
  #
  #   Symbol.generate(:foo) => :foo-1
  #
  #   TODO: Is the generated symbol format acceptable?
  #
  # CREDIT: Trans

  def self.generate(key=nil)
    key = key.to_sym if key
    @symbol_generate_counter ||= {}
    @symbol_generate_counter[key] ||= 0
    num = @symbol_generate_counter[key] += 1
    ("#{key}-%X" % num).to_sym
  end

end

