0.01
No release in over 3 years
Low commit activity in last 3 years
A DigitalOcean-community-themed username generator.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme

do_username

A DigitalOcean-community-themed username generator.

Implementations

Ruby

README

https://rubygems.org/gems/do_username

gem install do_username

JavaScript

README

https://www.npmjs.com/package/do_username

npm install do_username

Rust

README

https://crates.io/crates/do_username

do_username = "1.0.0"

Go

README

go get github.com/MattIPv4/do_username/go

Interface

The Ruby gem acts as the main implementation, with all other implementations porting and mirroring the interface that the Ruby gem offers.

All implementations will provide the generate method. This method shall have a single, optional argument that defines the maximum (inclusive) size of the generated username. The default value for this argument shall be 30.

All implementations will provide a set of (frozen) constants that are arrays of strings, with all the parts used randomly during username generation:

  • SEA_CREATURES, all the creature nouns.
  • SEA_OBJECTS, all the misc. object nouns.
  • ADJECTIVE_DESCRIPTORS, descriptors for all nouns (creatures + objects).
  • SIZE_DESCRIPTORS, descriptors for all nouns (creatures + objects).
  • CREATURE_DESCRIPTORS, descriptors specific to creature nouns.
  • SEA_LIST, a combination of the creature + object nouns.
  • DESCRIPTORS, a combination of the generic (adjective + size) descriptors.
  • COLORS, all possible (sea-related) colors.

All generated usernames will be in CamelCase with no whitespace present. Usernames are formed from 1 to 3 parts, a random noun, a random descriptor, and a random color. Each constituent part should have the first character set to uppercase by the implementation, with all subsequent characters having their case preserved from the source string (e.g. scubaDiver -> ScubaDiver). These parts are concatenated to form the final username with the following strategy:

  1. If the combination of descriptor + color + noun is less than or equal to the max length, return that value.
  2. Else, if the combination of descriptor + noun is less than or equal to the max length, return that value.
  3. Else, if the combination of color + noun is less than or equal to the max length, return that value.
  4. Else, return just the noun, trimmed to the max length set (may be the full string).

Both the generate method and the constants should be provided as part of a module (or as static methods/constants in a class) named DOUsername, such that the method can be accessed via DOUsername.generate, where appropriate.

License

This project is licensed under Apache 2.0