do_username 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/do_username.rb +36 -21
  3. metadata +65 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42e0e0e618804762996ba81c382c3c9f106dc17d8f746f4d62367a98a3a9ea98
4
- data.tar.gz: 7b1b6827cba54ee2ba1b67c5f7827f66a651096d502c1dd30b8664a67bdb160b
3
+ metadata.gz: 730e7a6cf257a9c5bf9732d67c3d0339868fa3a5c97ebeb6fac30c8c20b931c9
4
+ data.tar.gz: 407c5460760080179c16be991b33d48035b586c9e129cb1dad7caf44d7f67a85
5
5
  SHA512:
6
- metadata.gz: 774841547074f43c586fd3cdb83065914a7488a867602e575b87b4fb03019a9c119b047ed498e2cf06c05847f8750e85530a94a4993008eee5ef4c66a4b4a918
7
- data.tar.gz: 1a22505aa37d891cad4c0125ea602dddf554a43e04ba26f0ee8735882d31478607eed6d040ae0579131e11ecb2df636b0f020ab17e50ff2b7594cf8c9706c22e
6
+ metadata.gz: 2bf420f496e85f2763af426c7e79e776050ef0893d9e6b732c9932d8d6ac205cbf349e95f32ec8b12dbadf951ba4d80c0461d153c8819f70ab2584cec7384839
7
+ data.tar.gz: ba52e487d9c146633e39a6b74f1af194220653dcdeb6b07bf036535081a04894f6cec327e6b7db60c8e0922a080141938cd4b7d2965e705353fb55721716c008
@@ -1,16 +1,28 @@
1
1
  module DOUsername
2
- SEA_CREATURES = %w(walrus seal fish shark clam coral whale crab lobster starfish eel dolphin squid jellyfish ray giantSquid shrimp mantaRay angler snorkler scubaDiver).freeze
3
- SEA_OBJECTS = %w(boat ship submarine yacht dinghy raft kelp).freeze
2
+ SEA_CREATURES = %w[
3
+ walrus seal fish shark clam coral whale crab lobster starfish eel dolphin
4
+ squid jellyfish ray shrimp mantaRay angler snorkler scubaDiver urchin
5
+ anemone morel axolotl
6
+ ].freeze
7
+ SEA_OBJECTS = %w[boat ship submarine yacht dinghy raft kelp seaweed anchor].freeze
4
8
 
5
- DESCRIPTORS = %w(cute adorable lovable happy sandy).freeze
6
- SIZE_DESCRIPTORS = %w(large big small).freeze
7
- CREATURE_DESCRIPTORS= %w(swimming).freeze
9
+ ADJECTIVE_DESCRIPTORS = %w[cute adorable lovable happy sandy bubbly friendly floating drifting].freeze
10
+ SIZE_DESCRIPTORS = %w[large big small giant massive tiny little].freeze
11
+ CREATURE_DESCRIPTORS = %w[swimming sleeping eating hiding].freeze
8
12
 
9
- COLORS = %w(blue blueGreen darkCyan electricBlue greenBlue lightCyan lightSeaGreen seaGreen turquoise aqua aquamarine teal cyan gray).freeze
13
+ SEA_LIST = (SEA_OBJECTS + SEA_CREATURES).freeze
14
+ DESCRIPTORS = (ADJECTIVE_DESCRIPTORS + SIZE_DESCRIPTORS).freeze
15
+
16
+ COLORS = %w[
17
+ blue blueGreen darkCyan electricBlue greenBlue lightCyan lightSeaGreen seaGreen
18
+ turquoise aqua aquamarine teal cyan gray darkBlue cerulean azure lapis navy
19
+ ].freeze
10
20
 
11
21
  extend self
12
22
 
13
23
  def generate(max_size = 30)
24
+ raise ArgumentError, 'The max_size argument must be an integer number greater than zero.' if max_size.to_i <= 0
25
+
14
26
  # Choose a noun first
15
27
  noun = random_noun
16
28
 
@@ -25,29 +37,19 @@ module DOUsername
25
37
  descriptor = format(descriptor)
26
38
  color = format(color)
27
39
 
28
- # Combine to create username shorter than or equal to given length
29
- if (descriptor + color + noun).length <= max_size
30
- descriptor + color + noun
31
- elsif (descriptor + noun).length <= max_size
32
- descriptor + noun
33
- elsif (color + noun).length <= max_size
34
- color + noun
35
- else
36
- noun[0...max_size]
37
- end
40
+ combine_username(max_size, descriptor, color, noun)
38
41
  end
39
42
 
40
43
  private
41
44
 
42
45
  def random_noun
43
- (SEA_OBJECTS + SEA_CREATURES).sample
46
+ SEA_LIST.sample
44
47
  end
45
48
 
46
49
  def random_descriptor(noun)
47
- descriptors = DESCRIPTORS.dup
48
- descriptors += SIZE_DESCRIPTORS unless noun.start_with?('giant')
49
- descriptors += CREATURE_DESCRIPTORS if SEA_CREATURES.include?(noun)
50
- descriptors.sample
50
+ return DESCRIPTORS.sample unless SEA_CREATURES.include?(noun)
51
+
52
+ (DESCRIPTORS + CREATURE_DESCRIPTORS).sample
51
53
  end
52
54
 
53
55
  def random_color
@@ -57,4 +59,17 @@ module DOUsername
57
59
  def format(string)
58
60
  string[0].upcase + string[1..-1]
59
61
  end
62
+
63
+ def combine_username(max_size, descriptor, color, noun)
64
+ # Combine to create username shorter than or equal to given length
65
+ if (descriptor + color + noun).length <= max_size
66
+ descriptor + color + noun
67
+ elsif (descriptor + noun).length <= max_size
68
+ descriptor + noun
69
+ elsif (color + noun).length <= max_size
70
+ color + noun
71
+ else
72
+ noun[0...max_size]
73
+ end
74
+ end
60
75
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: do_username
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - DigitalOcean
@@ -9,8 +9,64 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-22 00:00:00.000000000 Z
13
- dependencies: []
12
+ date: 2020-10-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '3.9'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '3.9'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rubocop
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 0.90.0
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.90.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: rubocop-performance
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.8'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.8'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rubocop-rspec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.43'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.43'
14
70
  description: A DigitalOcean-community-themed username generator.
15
71
  email: me@mattcowley.co.uk
16
72
  executables: []
@@ -18,10 +74,13 @@ extensions: []
18
74
  extra_rdoc_files: []
19
75
  files:
20
76
  - lib/do_username.rb
21
- homepage: https://rubygems.org/gems/do_username
77
+ homepage: https://github.com/MattIPv4/do_username/tree/master/ruby#readme
22
78
  licenses:
23
79
  - Apache-2.0
24
- metadata: {}
80
+ metadata:
81
+ bug_tracker_uri: https://github.com/MattIPv4/do_username/issues
82
+ homepage_uri: https://github.com/MattIPv4/do_username/tree/master/ruby#readme
83
+ source_code_uri: https://github.com/MattIPv4/do_username
25
84
  post_install_message:
26
85
  rdoc_options: []
27
86
  require_paths:
@@ -30,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
30
89
  requirements:
31
90
  - - ">="
32
91
  - !ruby/object:Gem::Version
33
- version: '0'
92
+ version: 2.5.0
34
93
  required_rubygems_version: !ruby/object:Gem::Requirement
35
94
  requirements:
36
95
  - - ">="