strandom 1.0.1 → 2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +25 -5
- data/bin/strandom +30 -18
- data/lib/strandom.rb +49 -35
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50efedb190938b9aff3b35885fdfd290bfab92f2
|
4
|
+
data.tar.gz: b9f110f65fabf9ded8216883a94197da1facfb9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89e9026f4b518b55ac04d5a43647aac1d8efcd8a79aa91b423ed8cdefddcc8203e31aa63d5258cb8f3f97a7f5d7a5d535d6de5da42b32556dc223bfba2dd9bdb
|
7
|
+
data.tar.gz: 9d33f38ada006e25bca0e9f0f7da9fa5a7c4c7c958b059821d183cad0a02f77f48088d02eea5f844d0742c5681fe001c62bec1ee96cd598670806447402cec9f
|
data/README.md
CHANGED
@@ -1,11 +1,14 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
Thoom::Strandom
|
2
|
+
===============
|
3
|
+
Random string command line generator
|
3
4
|
|
4
|
-
|
5
|
+
Installation
|
6
|
+
------------
|
5
7
|
|
6
8
|
gem install strandom
|
7
9
|
|
8
|
-
|
10
|
+
CLI Help
|
11
|
+
--------
|
9
12
|
|
10
13
|
Usage: strandom [options]
|
11
14
|
|
@@ -26,7 +29,9 @@ Random string command line script
|
|
26
29
|
--help Shows this message
|
27
30
|
--version Current version
|
28
31
|
|
29
|
-
|
32
|
+
Examples
|
33
|
+
--------
|
34
|
+
|
30
35
|
#### Basic
|
31
36
|
|
32
37
|
$ strandom --lownum 10
|
@@ -48,3 +53,18 @@ Examples:
|
|
48
53
|
|
49
54
|
$ strandom --custom "%|4|*|,|?",10,"|"
|
50
55
|
=> ??4,%%,*%4
|
56
|
+
|
57
|
+
License
|
58
|
+
-------
|
59
|
+
|
60
|
+
Licensed under [MIT](https://github.com/thoom/strandom/blob/master/LICENSE).
|
61
|
+
|
62
|
+
ChangeLog
|
63
|
+
---------
|
64
|
+
|
65
|
+
#### 2.0
|
66
|
+
Fixes Issues [#1](https://github.com/thoom/strandom/issues/1) and [#2](https://github.com/thoom/strandom/issues/2).
|
67
|
+
Complete refactor of the library class.
|
68
|
+
Added unit tests.
|
69
|
+
|
70
|
+
|
data/bin/strandom
CHANGED
@@ -10,8 +10,8 @@ cust_delimiter = ''
|
|
10
10
|
|
11
11
|
parser = OptionParser.new do |o|
|
12
12
|
o.banner = 'Usage: strandom [options]'
|
13
|
-
o.separator
|
14
|
-
o.separator
|
13
|
+
o.separator ''
|
14
|
+
o.separator 'Specific options:'
|
15
15
|
|
16
16
|
o.on('--alnum [length]', 'Characters a-z, A-Z, 0-9') do |length|
|
17
17
|
type = :alnum
|
@@ -67,8 +67,8 @@ parser = OptionParser.new do |o|
|
|
67
67
|
len = length if length
|
68
68
|
end
|
69
69
|
|
70
|
-
o.separator
|
71
|
-
o.separator
|
70
|
+
o.separator ''
|
71
|
+
o.separator 'Common options:'
|
72
72
|
|
73
73
|
o.on_tail('--help', 'Shows this message') do
|
74
74
|
puts o
|
@@ -78,10 +78,10 @@ parser = OptionParser.new do |o|
|
|
78
78
|
o.on_tail('--version', 'Current version') do
|
79
79
|
puts <<TXT
|
80
80
|
|
81
|
-
Thoom Strandom v.
|
82
|
-
|
81
|
+
Thoom Strandom v. 2.0
|
82
|
+
---------------------
|
83
83
|
e: zdp@thoomtech.com
|
84
|
-
w: https://github.com/thoom/
|
84
|
+
w: https://github.com/thoom/strandom
|
85
85
|
|
86
86
|
TXT
|
87
87
|
exit
|
@@ -91,16 +91,28 @@ end
|
|
91
91
|
parser.parse! ARGV
|
92
92
|
|
93
93
|
len = len.to_i
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
94
|
+
result = case type
|
95
|
+
when :alpha
|
96
|
+
Thoom::Strandom.alphabetic(len)
|
97
|
+
when :alnum
|
98
|
+
Thoom::Strandom.alphanumeric(len)
|
99
|
+
when :custom
|
100
|
+
cust = cust_vals.split(cust_delimiter)
|
101
|
+
Thoom::Strandom.custom(len: len, values: cust)
|
102
|
+
when :hex
|
103
|
+
Thoom::Strandom.hex(len)
|
104
|
+
when :num
|
105
|
+
Thoom::Strandom.numeric(len)
|
106
|
+
when :lower
|
107
|
+
Thoom::Strandom.lower_alphabetic(len)
|
108
|
+
when :lownum
|
109
|
+
Thoom::Strandom.lower_alphanumeric(len)
|
110
|
+
when :upper
|
111
|
+
Thoom::Strandom.upper_alphabetic(len)
|
112
|
+
when :upnum
|
113
|
+
Thoom::Strandom.upper_alphanumeric(len)
|
114
|
+
when :uuid
|
115
|
+
Thoom::Strandom.uuid
|
116
|
+
end
|
104
117
|
|
105
118
|
puts result
|
106
|
-
|
data/lib/strandom.rb
CHANGED
@@ -1,47 +1,61 @@
|
|
1
1
|
require 'securerandom'
|
2
2
|
|
3
3
|
module Thoom
|
4
|
+
# Provides several convenience methods to generating random strings
|
4
5
|
class Strandom
|
6
|
+
@num_range = (48..57).to_a
|
7
|
+
@upper_range = (65..90).to_a
|
8
|
+
@lower_range = (97..122).to_a
|
9
|
+
|
5
10
|
class << self
|
6
|
-
|
7
|
-
SecureRandom.hex(len / 2)
|
8
|
-
end
|
9
|
-
|
10
|
-
def rand(len: 0, type: :alnum, cust: [])
|
11
|
-
num = (48..57).to_a
|
12
|
-
upper = (65..90).to_a
|
13
|
-
lower = (97..122).to_a
|
14
|
-
|
15
|
-
case type
|
16
|
-
when :alpha
|
17
|
-
range = upper + lower
|
18
|
-
when :upper
|
19
|
-
range = upper
|
20
|
-
when :upnum
|
21
|
-
range = num + upper
|
22
|
-
when :lower
|
23
|
-
range = lower
|
24
|
-
when :lownum
|
25
|
-
range = num + lower
|
26
|
-
when :num
|
27
|
-
range = num
|
28
|
-
when :custom
|
29
|
-
range = cust
|
30
|
-
else
|
31
|
-
range = num + upper + lower
|
32
|
-
end
|
11
|
+
attr_reader :num_range, :upper_range, :lower_range
|
33
12
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
13
|
+
def alphabetic(len = 0)
|
14
|
+
randomize(len, upper_range + lower_range)
|
15
|
+
end
|
16
|
+
|
17
|
+
def alphanumeric(len = 0)
|
18
|
+
randomize(len, num_range + upper_range + lower_range)
|
19
|
+
end
|
20
|
+
|
21
|
+
def custom(len: 0, values: [])
|
22
|
+
([nil] * len).map { values.sample }.join
|
23
|
+
end
|
24
|
+
|
25
|
+
def hex(len = 2)
|
26
|
+
SecureRandom.hex(len / 2)
|
27
|
+
end
|
28
|
+
|
29
|
+
def numeric(len = 0)
|
30
|
+
randomize(len, num_range)
|
31
|
+
end
|
32
|
+
|
33
|
+
def lower_alphabetic(len = 0)
|
34
|
+
randomize(len, lower_range)
|
35
|
+
end
|
36
|
+
|
37
|
+
def lower_alphanumeric(len = 0)
|
38
|
+
randomize(len, num_range + lower_range)
|
40
39
|
end
|
41
40
|
|
42
|
-
def
|
41
|
+
def upper_alphabetic(len = 0)
|
42
|
+
randomize(len, upper_range)
|
43
|
+
end
|
44
|
+
|
45
|
+
def upper_alphanumeric(len = 0)
|
46
|
+
randomize(len, num_range + upper_range)
|
47
|
+
end
|
48
|
+
|
49
|
+
def uuid
|
43
50
|
SecureRandom.uuid
|
44
51
|
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def randomize(len, range)
|
56
|
+
# pulled from http://codereview.stackexchange.com/questions/15958
|
57
|
+
([nil] * len).map { range.sample.chr }.join
|
58
|
+
end
|
45
59
|
end
|
46
60
|
end
|
47
|
-
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: strandom
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: '2.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Z.d. Peacock
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: An executable for generating a random string
|
14
14
|
email: zdp@thoomtech.com
|
@@ -41,7 +41,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
41
41
|
version: '0'
|
42
42
|
requirements: []
|
43
43
|
rubyforge_project:
|
44
|
-
rubygems_version: 2.
|
44
|
+
rubygems_version: 2.5.1
|
45
45
|
signing_key:
|
46
46
|
specification_version: 4
|
47
47
|
summary: 'Thoom Strandom: A random string generator'
|