lita-random 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/CHANGELOG.md +13 -1
- data/README.md +21 -2
- data/lib/lita/handlers/random.rb +88 -2
- data/lita-random.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c67828bb15939d57f5bec91b06da08d4d6aee941
|
4
|
+
data.tar.gz: 1cfe508040cdac80136ece314a00ebb8ba475e7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88025951bc7403f01a417f3df20e9ee9eb44dd823b124a9182b40239185847868adaf7fbe74d64f4164cd45b797d156da9bd911d63997e91c069f5e6355b924e
|
7
|
+
data.tar.gz: eef729336d090cf88bffde3a8337b4882f7e0c4fa96e5bd281ac303888d6757224b5140e11610813118548b173b2904fb281f466ca2414012612dcffdfefb704
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v0.4.0](https://github.com/braiden-vasco/lita-random/tree/v0.4.0) (2015-06-23)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/braiden-vasco/lita-random/compare/v0.3.0...v0.4.0)
|
6
|
+
|
7
|
+
**Merged pull requests:**
|
8
|
+
|
9
|
+
- Add password generator [\#28](https://github.com/braiden-vasco/lita-random/pull/28) ([braiden-vasco](https://github.com/braiden-vasco))
|
10
|
+
|
11
|
+
- Add smart password generator [\#27](https://github.com/braiden-vasco/lita-random/pull/27) ([braiden-vasco](https://github.com/braiden-vasco))
|
12
|
+
|
13
|
+
- Add help for commands [\#26](https://github.com/braiden-vasco/lita-random/pull/26) ([braiden-vasco](https://github.com/braiden-vasco))
|
14
|
+
|
3
15
|
## [v0.3.0](https://github.com/braiden-vasco/lita-random/tree/v0.3.0) (2015-06-21)
|
4
16
|
|
5
17
|
[Full Changelog](https://github.com/braiden-vasco/lita-random/compare/v0.2.0...v0.3.0)
|
@@ -8,7 +20,7 @@
|
|
8
20
|
|
9
21
|
- Add UUID generator [\#23](https://github.com/braiden-vasco/lita-random/pull/23) ([braiden-vasco](https://github.com/braiden-vasco))
|
10
22
|
|
11
|
-
-
|
23
|
+
- Optional spaces between commands, add more aliases [\#22](https://github.com/braiden-vasco/lita-random/pull/22) ([braiden-vasco](https://github.com/braiden-vasco))
|
12
24
|
|
13
25
|
- Add hexadecimal string generator [\#21](https://github.com/braiden-vasco/lita-random/pull/21) ([braiden-vasco](https://github.com/braiden-vasco))
|
14
26
|
|
data/README.md
CHANGED
@@ -17,7 +17,7 @@ At first, see the documentation for Lita: https://docs.lita.io/
|
|
17
17
|
Add **lita-random** to your Lita instance's Gemfile:
|
18
18
|
|
19
19
|
```ruby
|
20
|
-
gem 'lita-random', '~> 0.
|
20
|
+
gem 'lita-random', '~> 0.4.0'
|
21
21
|
```
|
22
22
|
|
23
23
|
### Commands
|
@@ -49,11 +49,20 @@ Command `hex` has aliases `hx` and `x`
|
|
49
49
|
|
50
50
|
Command `uuid` has alias `uid`
|
51
51
|
|
52
|
-
* `random uuid`
|
52
|
+
* `random uuid` -
|
53
53
|
v4 random UUID (Universally Unique IDentifier). The version 4 UUID
|
54
54
|
is purely random (except the version). It doesn’t contain
|
55
55
|
meaningful information such as MAC address, time, etc.
|
56
56
|
|
57
|
+
Command `password` has alias `pass`
|
58
|
+
|
59
|
+
* `random password <n=16>` -
|
60
|
+
random password with length `n` containing characters
|
61
|
+
in upper and lower case, and digits
|
62
|
+
|
63
|
+
* `random smart password <n=8>` -
|
64
|
+
random pronounceable password with a minimum length of `n`
|
65
|
+
|
57
66
|
### Examples
|
58
67
|
|
59
68
|
```
|
@@ -88,4 +97,14 @@ Lita: 0d8297837d6e63b8c25b
|
|
88
97
|
|
89
98
|
You: lita random uuid
|
90
99
|
Lita: f1281565-3c8a-475d-a1aa-565ff840a42c
|
100
|
+
|
101
|
+
You: lita random password
|
102
|
+
Lita: TXXBu7XEBdwFF7fP
|
103
|
+
You: lita randpass 8
|
104
|
+
Lita: 7lFateFs
|
105
|
+
|
106
|
+
You: lita random smart password
|
107
|
+
Lita: mospowot
|
108
|
+
You: lita random smartpass 16
|
109
|
+
Lita: jophemyrdivezagi
|
91
110
|
```
|
data/lib/lita/handlers/random.rb
CHANGED
@@ -9,8 +9,42 @@ module Lita
|
|
9
9
|
##
|
10
10
|
# Generator of random numbers and strings for the Lita chat bot.
|
11
11
|
#
|
12
|
-
class Random < Handler
|
13
|
-
|
12
|
+
class Random < Handler # rubocop:disable Metrics/ClassLength
|
13
|
+
HELP = {
|
14
|
+
'random' =>
|
15
|
+
'random float number, greater or equal to 0 and lesser than 1',
|
16
|
+
|
17
|
+
'random <to>' =>
|
18
|
+
'random integer or float number, ' \
|
19
|
+
'greater or equal to 0 and lesser than `to`',
|
20
|
+
|
21
|
+
'random <from> <to>' =>
|
22
|
+
'random integer or float number, ' \
|
23
|
+
'greater or equal to `from` and lesser than `to`',
|
24
|
+
|
25
|
+
'random base64 <n=16>' =>
|
26
|
+
'random base64 string, length of source string is n, ' \
|
27
|
+
'length of result is about `n * 4 / 3` ' \
|
28
|
+
'(24 with default value of `n`)',
|
29
|
+
|
30
|
+
'random hex <n=16>' =>
|
31
|
+
'random hexadecimal string with length `n * 2`',
|
32
|
+
|
33
|
+
'random uuid' =>
|
34
|
+
'v4 random UUID (Universally Unique IDentifier). ' \
|
35
|
+
'The version 4 UUID is purely random (except the version). ' \
|
36
|
+
'It doesn’t contain meaningful information ' \
|
37
|
+
'such as MAC address, time, etc.',
|
38
|
+
|
39
|
+
'random password <n=16>' =>
|
40
|
+
'random password with length `n` containing characters ' \
|
41
|
+
'in upper and lower case, and digits',
|
42
|
+
|
43
|
+
'random smart password <n=8>' =>
|
44
|
+
'random pronounceable password with a minimum length of `n`',
|
45
|
+
}
|
46
|
+
|
47
|
+
route(/^rand(om)?$/i, :route_random, command: true, help: HELP)
|
14
48
|
def route_random(response)
|
15
49
|
response.reply(::Random.rand.to_s)
|
16
50
|
end
|
@@ -74,6 +108,58 @@ module Lita
|
|
74
108
|
def route_random_uuid(response)
|
75
109
|
response.reply(SecureRandom.uuid)
|
76
110
|
end
|
111
|
+
|
112
|
+
route(/^rand(om)?\s*smart\s*pass(word)?$/i,
|
113
|
+
:route_random_smart_pass, command: true)
|
114
|
+
def route_random_smart_pass(response)
|
115
|
+
response.reply(smart_password)
|
116
|
+
end
|
117
|
+
|
118
|
+
route(/^rand(om)?\s*smart\s*pass(word)?\s+(?<n>\d+)$/i,
|
119
|
+
:route_random_smart_pass_n, command: true)
|
120
|
+
def route_random_smart_pass_n(response)
|
121
|
+
min_length = response.matches[0][0].to_i
|
122
|
+
response.reply(smart_password(min_length))
|
123
|
+
end
|
124
|
+
|
125
|
+
route(/^rand(om)?\s*pass(word)?$/i, :route_random_pass, command: true)
|
126
|
+
def route_random_pass(response)
|
127
|
+
response.reply(password)
|
128
|
+
end
|
129
|
+
|
130
|
+
route(/^rand(om)?\s*pass(word)?\s+(?<n>\d+)$/i,
|
131
|
+
:route_random_pass_n, command: true)
|
132
|
+
def route_random_pass_n(response)
|
133
|
+
length = response.matches[0][0].to_i
|
134
|
+
response.reply(password(length))
|
135
|
+
end
|
136
|
+
|
137
|
+
protected
|
138
|
+
|
139
|
+
SMART_PASS_SEQS = {
|
140
|
+
false => %w(
|
141
|
+
b c d f g h j k l m n p qu r s t v w x z
|
142
|
+
ch cr fr nd ng nk nt ph pr rd sh sl sp st th tr lt
|
143
|
+
),
|
144
|
+
true => %w(a e i o u y),
|
145
|
+
}
|
146
|
+
|
147
|
+
def smart_password(min_length = 8)
|
148
|
+
password = ''
|
149
|
+
sequence_id = false
|
150
|
+
while password.length < min_length
|
151
|
+
sequence = SMART_PASS_SEQS[sequence_id]
|
152
|
+
password << sequence.sample
|
153
|
+
sequence_id = !sequence_id
|
154
|
+
end
|
155
|
+
password
|
156
|
+
end
|
157
|
+
|
158
|
+
PASS_CHARS = [*'a'..'z', *'A'..'Z', *'0'..'9']
|
159
|
+
|
160
|
+
def password(length = 16)
|
161
|
+
(0...length).map { |_| PASS_CHARS.sample }.join
|
162
|
+
end
|
77
163
|
end
|
78
164
|
|
79
165
|
Lita.register_handler(Random)
|
data/lita-random.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-random
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Braiden Vasco
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|