rando 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/rando.rb +147 -0
  3. metadata +115 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 528e91c8035d7827a8d5fd7d1c5a62e05c7b9f812b7053027f7afd1afbfe1279
4
+ data.tar.gz: 4382b094a407846d5a93d75eadc2a79b56331c3c735e1edb8b78ba6b26de204d
5
+ SHA512:
6
+ metadata.gz: f5f42b1d99c9b499bb0f700ada1b7ae58dd6d9f2be63c4db9869e9a43087dbe1c17f52b7f7aa3f9f12be5caf6ac398bf52116a1c0a1b107501e1f38f5ee64d19
7
+ data.tar.gz: 10b24070fc91a9ab3a6d5a2f860d776bfebe91366b074d6e3053acf2865f833b9d5c3f8d63ae8b0aed1218d26b3a737ab1cf3d92db73d3e726bf291757991d0b
data/lib/rando.rb ADDED
@@ -0,0 +1,147 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Rando
4
+ class Rando
5
+ def rando(*args)
6
+ # puts "args = #{args}"
7
+
8
+ execute(args, false)
9
+ end
10
+
11
+ def rando_sequence(*args)
12
+ # puts "args = #{args}"
13
+
14
+ execute(args, true)
15
+ end
16
+
17
+ private
18
+
19
+ def execute(args, with_sequence = false)
20
+ result = rand(0..1).to_f
21
+
22
+ if !args.nil? && !args.empty?
23
+ case args.length
24
+ when 1
25
+ item = args[0]
26
+ result = args_length1(item, with_sequence)
27
+ when 2
28
+ item = args[0]
29
+ item2 = args[1]
30
+ result = args_length2(item, item2, with_sequence)
31
+ when 3
32
+ item = args[0]
33
+ item2 = args[1]
34
+ item3 = args[2]
35
+ result = args_length3(item, item2, item3, with_sequence)
36
+ end
37
+ end
38
+
39
+ result
40
+ end
41
+
42
+ def args_length1(item, with_sequence = false)
43
+ result = nil
44
+
45
+ if !item.nil?
46
+ if item.instance_of?(Integer)
47
+ if !with_sequence
48
+ result = rand(0..item)
49
+ else
50
+ num_list = (0..item).map do |number|
51
+ number
52
+ end
53
+ random_num_list = num_list.shuffle
54
+ result = random_num_list
55
+ end
56
+ elsif item.instance_of?(Array)
57
+ if !with_sequence
58
+ random_item = item.sample
59
+
60
+ index = item.index(random_item)
61
+ value = item[index]
62
+
63
+ result = { index: index, value: value }
64
+ else
65
+ item_list = item.map.with_index do |value, i|
66
+ {
67
+ index: i,
68
+ value: value
69
+ }
70
+ end
71
+ random_item_list = item_list.shuffle
72
+ result = random_item_list
73
+ end
74
+ elsif item.instance_of?(Hash)
75
+ if !with_sequence
76
+ key = item.keys.sample
77
+ value = item[key]
78
+ result = { key: key, value: value }
79
+ else
80
+ hash_list = []
81
+ item.each do |key, value|
82
+ data = {
83
+ key: key,
84
+ value: value
85
+ }
86
+ hash_list.push(data)
87
+ end
88
+ random_hash_list = hash_list.shuffle
89
+ result = random_hash_list
90
+ end
91
+ elsif item.instance_of?(String)
92
+ if !item.nil? && !item.empty?
93
+ chars_list = item.chars
94
+
95
+ if !with_sequence
96
+ result = chars_list.sample
97
+ else
98
+ random_chars_list = chars_list.shuffle
99
+ result = random_chars_list
100
+ end
101
+ else
102
+ result = false
103
+ end
104
+ end
105
+ else
106
+ result = false
107
+ end
108
+
109
+ result
110
+ end
111
+
112
+ def args_length2(item, item2, with_sequence = false)
113
+ result = nil
114
+
115
+ boolean_list = [true, false]
116
+
117
+ if item.instance_of?(Integer)
118
+ if item2.instance_of?(Integer)
119
+ if !with_sequence
120
+ result = rand(item..item2)
121
+ else
122
+ num_list = (item..item2).map do |number|
123
+ number
124
+ end
125
+ random_num_list = num_list.shuffle
126
+ result = random_num_list
127
+ end
128
+ end
129
+
130
+ result = rand(0..item).to_f if item2.instance_of?(String) && item2 == 'float'
131
+ elsif boolean_list.include?(item) && boolean_list.include?(item2)
132
+ result = boolean_list.sample
133
+ end
134
+
135
+ result
136
+ end
137
+
138
+ def args_length3(item, item2, item3, _with_sequence = false)
139
+ result = nil
140
+
141
+ if item.instance_of?(Integer) && item2.instance_of?(Integer) && item3.instance_of?(String) && (item3 == 'float')
142
+ result = rand(item..item2).to_f
143
+ end
144
+
145
+ result
146
+ end
147
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rando
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
+ platform: ruby
6
+ authors:
7
+ - Donald Wu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-06-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: reek
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.1'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.11'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.11'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.30'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.30'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop-rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.11'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.11'
69
+ - !ruby/object:Gem::Dependency
70
+ name: solargraph
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.45'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.45'
83
+ description: Random item generator
84
+ email: yeukfei02@gmail.com
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files: []
88
+ files:
89
+ - lib/rando.rb
90
+ homepage: https://rubygems.org/gems/rando
91
+ licenses:
92
+ - MIT
93
+ metadata:
94
+ documentation_uri: https://github.com/yeukfei02/rando
95
+ source_code_uri: https://github.com/yeukfei02/rando
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.7.0
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubygems_version: 3.1.6
112
+ signing_key:
113
+ specification_version: 4
114
+ summary: Random item generator
115
+ test_files: []