passwd 0.0.7 → 0.1.0
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.
- checksums.yaml +7 -0
- data/.coveralls.yml +1 -1
- data/.travis.yml +1 -1
- data/Gemfile +1 -0
- data/README.md +5 -1
- data/Rakefile +2 -4
- data/lib/passwd.rb +19 -27
- data/lib/passwd/configuration.rb +50 -0
- data/lib/passwd/version.rb +1 -1
- data/spec/passwd/active_record_spec.rb +1 -1
- data/spec/passwd/configuration_spec.rb +242 -0
- data/spec/passwd/password_spec.rb +1 -2
- data/spec/passwd_spec.rb +61 -61
- data/spec/spec_helper.rb +9 -13
- metadata +14 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8d747281623609db763e8bbefa99fc1fb14cdad2
|
4
|
+
data.tar.gz: fa857ec1c64e9fc4f0967fd963a435793e1050b5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 21df8d0e09673b322a47834202f2663e0a687a10c28665283c832a35b857f37575a19bbf25a66110eb7ffe8b67f3e4546930676e25ed816f6ab33beea5b7bdef
|
7
|
+
data.tar.gz: b2672f8d1c14d48b0b7f0171eee41a6c9aeead396e61af1c6a058592876c3da106214888c134c1ec9c4ecd54dac049ce37adeb827257e777696534422132fbf7
|
data/.coveralls.yml
CHANGED
@@ -1 +1 @@
|
|
1
|
-
repo_token:
|
1
|
+
repo_token: 106V5oEIwXeOfqT35UWifTnifi5sEO2QP
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -45,12 +45,16 @@ password_hash = Passwd.hashing(password)
|
|
45
45
|
|
46
46
|
### Password settings
|
47
47
|
|
48
|
-
Default config is stored in the class variable.
|
48
|
+
Default config is stored in the class instance variable.
|
49
49
|
Changing the default configs are as follows:
|
50
50
|
|
51
51
|
```ruby
|
52
52
|
Passwd.config => Get config hash.
|
53
53
|
Passwd.config(length: 10) => Change to the default length.
|
54
|
+
|
55
|
+
Passwd.configure do |c|
|
56
|
+
c.length = 10
|
57
|
+
end
|
54
58
|
```
|
55
59
|
|
56
60
|
Options that can be specified:
|
data/Rakefile
CHANGED
data/lib/passwd.rb
CHANGED
@@ -5,23 +5,16 @@ require "digest/sha1"
|
|
5
5
|
require "passwd/version"
|
6
6
|
require "passwd/password"
|
7
7
|
require "passwd/active_record"
|
8
|
+
require "passwd/configuration"
|
8
9
|
|
9
10
|
module Passwd
|
10
|
-
|
11
|
-
length: 8,
|
12
|
-
lower: true,
|
13
|
-
upper: true,
|
14
|
-
number: true,
|
15
|
-
letters_lower: ('a'..'z').to_a,
|
16
|
-
letters_upper: ('A'..'Z').to_a,
|
17
|
-
letters_number: ('0'..'9').to_a
|
18
|
-
}
|
11
|
+
@config = Configuration.new
|
19
12
|
|
20
13
|
class << self
|
21
14
|
def create(options={})
|
22
|
-
config =
|
23
|
-
|
24
|
-
Array.new(config
|
15
|
+
config = @config.dup
|
16
|
+
config.merge options
|
17
|
+
Array.new(config.length){config.letters[rand(config.letters.size)]}.join
|
25
18
|
end
|
26
19
|
|
27
20
|
def auth(password_text, salt_hash, password_hash)
|
@@ -29,26 +22,25 @@ module Passwd
|
|
29
22
|
password_hash == enc_pass
|
30
23
|
end
|
31
24
|
|
32
|
-
def hashing(
|
33
|
-
Digest::SHA1.hexdigest
|
25
|
+
def hashing(plain)
|
26
|
+
Digest::SHA1.hexdigest plain
|
34
27
|
end
|
35
28
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
29
|
+
def configure(options={}, &block)
|
30
|
+
if block_given?
|
31
|
+
@config.configure &block
|
32
|
+
else
|
33
|
+
if options.empty?
|
34
|
+
@config
|
35
|
+
else
|
36
|
+
@config.merge options
|
37
|
+
end
|
45
38
|
end
|
46
39
|
end
|
40
|
+
alias :config :configure
|
47
41
|
|
48
|
-
def
|
49
|
-
|
50
|
-
config = config_hash.inject({}){|r, (k, v)| r.store(k.to_sym, v); r}
|
51
|
-
config.select{|k, v| parameters.include? k}
|
42
|
+
def reset_config
|
43
|
+
@config.reset
|
52
44
|
end
|
53
45
|
end
|
54
46
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Passwd
|
4
|
+
class Configuration
|
5
|
+
VALID_OPTIONS_KEYS = [
|
6
|
+
:length,
|
7
|
+
:lower,
|
8
|
+
:upper,
|
9
|
+
:number,
|
10
|
+
:letters_lower,
|
11
|
+
:letters_upper,
|
12
|
+
:letters_number
|
13
|
+
].freeze
|
14
|
+
|
15
|
+
attr_accessor *VALID_OPTIONS_KEYS
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
reset
|
19
|
+
end
|
20
|
+
|
21
|
+
def configure
|
22
|
+
yield self
|
23
|
+
end
|
24
|
+
|
25
|
+
def merge(configs)
|
26
|
+
configs.keys.each do |k|
|
27
|
+
send("#{k}=", configs[k])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def letters
|
32
|
+
chars = []
|
33
|
+
chars.concat(self.letters_lower) if self.lower
|
34
|
+
chars.concat(self.letters_upper) if self.upper
|
35
|
+
chars.concat(self.letters_number) if self.number
|
36
|
+
raise "letters is empty" if chars.empty?
|
37
|
+
chars
|
38
|
+
end
|
39
|
+
|
40
|
+
def reset
|
41
|
+
self.length = 8
|
42
|
+
self.lower = true
|
43
|
+
self.upper = true
|
44
|
+
self.number = true
|
45
|
+
self.letters_lower = ("a".."z").to_a
|
46
|
+
self.letters_upper = ("A".."Z").to_a
|
47
|
+
self.letters_number = ("0".."9").to_a
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/passwd/version.rb
CHANGED
@@ -0,0 +1,242 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Passwd::Configuration do
|
6
|
+
let(:config) {Passwd::Configuration.new}
|
7
|
+
|
8
|
+
describe "defined accessors" do
|
9
|
+
it "defined length" do
|
10
|
+
expect(config.respond_to? :length).to be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "defined lower" do
|
14
|
+
expect(config.respond_to? :lower).to be_true
|
15
|
+
end
|
16
|
+
|
17
|
+
it "defined upper" do
|
18
|
+
expect(config.respond_to? :upper).to be_true
|
19
|
+
end
|
20
|
+
|
21
|
+
it "defined number" do
|
22
|
+
expect(config.respond_to? :number).to be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
it "defined letters_lower" do
|
26
|
+
expect(config.respond_to? :letters_lower).to be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "defined letters_upper" do
|
30
|
+
expect(config.respond_to? :letters_upper).to be_true
|
31
|
+
end
|
32
|
+
|
33
|
+
it "defined letters_number" do
|
34
|
+
expect(config.respond_to? :letters_number).to be_true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#initialize" do
|
39
|
+
it "length should be a default" do
|
40
|
+
expect(config.length).to eq(8)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "lower should be a default" do
|
44
|
+
expect(config.lower).to be_true
|
45
|
+
end
|
46
|
+
|
47
|
+
it "upper should be a default" do
|
48
|
+
expect(config.upper).to be_true
|
49
|
+
end
|
50
|
+
|
51
|
+
it "number should be a default" do
|
52
|
+
expect(config.number).to be_true
|
53
|
+
end
|
54
|
+
|
55
|
+
it "letters_lower should be a default" do
|
56
|
+
expect(config.letters_lower).to eq(("a".."z").to_a)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "letters_upper should be a default" do
|
60
|
+
expect(config.letters_upper).to eq(("A".."Z").to_a)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "letters_number should be a default" do
|
64
|
+
expect(config.letters_number).to eq(("0".."9").to_a)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#configure" do
|
69
|
+
before {
|
70
|
+
config.configure do |c|
|
71
|
+
c.length = 20
|
72
|
+
c.lower = false
|
73
|
+
c.upper = false
|
74
|
+
c.number = false
|
75
|
+
c.letters_lower = ["a"]
|
76
|
+
c.letters_upper = ["A"]
|
77
|
+
c.letters_number = ["0"]
|
78
|
+
end
|
79
|
+
}
|
80
|
+
|
81
|
+
it "set length from block" do
|
82
|
+
expect(config.length).to eq(20)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "set lower from block" do
|
86
|
+
expect(config.lower).to be_false
|
87
|
+
end
|
88
|
+
|
89
|
+
it "set upper from block" do
|
90
|
+
expect(config.upper).to be_false
|
91
|
+
end
|
92
|
+
|
93
|
+
it "set number from block" do
|
94
|
+
expect(config.number).to be_false
|
95
|
+
end
|
96
|
+
|
97
|
+
it "set letters_lower from block" do
|
98
|
+
expect(config.letters_lower).to eq(["a"])
|
99
|
+
end
|
100
|
+
|
101
|
+
it "set letters_upper from block" do
|
102
|
+
expect(config.letters_upper).to eq(["A"])
|
103
|
+
end
|
104
|
+
|
105
|
+
it "set letters_number from block" do
|
106
|
+
expect(config.letters_number).to eq(["0"])
|
107
|
+
end
|
108
|
+
|
109
|
+
it "raise error unknown setting" do
|
110
|
+
expect {
|
111
|
+
config.configure do |c|
|
112
|
+
c.unknown = true
|
113
|
+
end
|
114
|
+
}.to raise_error
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe "#merge" do
|
119
|
+
it "set length from hash" do
|
120
|
+
config.merge(length: 10)
|
121
|
+
expect(config.length).to eq(10)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "set lower from hash" do
|
125
|
+
config.merge(lower: false)
|
126
|
+
expect(config.lower).to be_false
|
127
|
+
end
|
128
|
+
|
129
|
+
it "set upper from hash" do
|
130
|
+
config.merge(upper: false)
|
131
|
+
expect(config.upper).to be_false
|
132
|
+
end
|
133
|
+
|
134
|
+
it "set number from hash" do
|
135
|
+
config.merge(number: false)
|
136
|
+
expect(config.number).to be_false
|
137
|
+
end
|
138
|
+
|
139
|
+
it "set letters_lower from hash" do
|
140
|
+
config.merge(letters_lower: ["a"])
|
141
|
+
expect(config.letters_lower).to eq(["a"])
|
142
|
+
end
|
143
|
+
|
144
|
+
it "set letters_upper from hash" do
|
145
|
+
config.merge(letters_upper: ["A"])
|
146
|
+
expect(config.letters_upper).to eq(["A"])
|
147
|
+
end
|
148
|
+
|
149
|
+
it "set letters_number from hash" do
|
150
|
+
config.merge(letters_number: ["0"])
|
151
|
+
expect(config.letters_number).to eq(["0"])
|
152
|
+
end
|
153
|
+
|
154
|
+
it "raise error unknown setting" do
|
155
|
+
expect {
|
156
|
+
config.merge(unknown: true)
|
157
|
+
}.to raise_error
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
describe "#letters" do
|
162
|
+
it "return Array object" do
|
163
|
+
expect(config.letters.is_a? Array).to be_true
|
164
|
+
end
|
165
|
+
|
166
|
+
it "all elements of the string" do
|
167
|
+
config.letters.each do |l|
|
168
|
+
expect(l.is_a? String).to be_true
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
it "return all letters" do
|
173
|
+
all_letters = ("a".."z").to_a.concat(("A".."Z").to_a).concat(("0".."9").to_a)
|
174
|
+
expect(config.letters).to eq(all_letters)
|
175
|
+
end
|
176
|
+
|
177
|
+
it "return except for the lower case" do
|
178
|
+
config.merge(lower: false)
|
179
|
+
expect(config.letters.include? "a").to be_false
|
180
|
+
end
|
181
|
+
|
182
|
+
it "return except for the upper case" do
|
183
|
+
config.merge(upper: false)
|
184
|
+
expect(config.letters.include? "A").to be_false
|
185
|
+
end
|
186
|
+
|
187
|
+
it "return except for the number case" do
|
188
|
+
config.merge(number: false)
|
189
|
+
expect(config.letters.include? "0").to be_false
|
190
|
+
end
|
191
|
+
|
192
|
+
it "raise error if letters is empty" do
|
193
|
+
config.merge(lower: false, upper: false, number: false)
|
194
|
+
expect {
|
195
|
+
config.letters
|
196
|
+
}.to raise_error
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe "#reset" do
|
201
|
+
before {
|
202
|
+
config.configure do |c|
|
203
|
+
c.length = 20
|
204
|
+
c.lower = false
|
205
|
+
c.upper = false
|
206
|
+
c.number = false
|
207
|
+
c.letters_lower = ["a"]
|
208
|
+
c.letters_upper = ["A"]
|
209
|
+
c.letters_number = ["0"]
|
210
|
+
end
|
211
|
+
config.reset
|
212
|
+
}
|
213
|
+
|
214
|
+
it "length should be a default" do
|
215
|
+
expect(config.length).to eq(8)
|
216
|
+
end
|
217
|
+
|
218
|
+
it "lower should be a default" do
|
219
|
+
expect(config.lower).to be_true
|
220
|
+
end
|
221
|
+
|
222
|
+
it "upper should be a default" do
|
223
|
+
expect(config.upper).to be_true
|
224
|
+
end
|
225
|
+
|
226
|
+
it "number should be a default" do
|
227
|
+
expect(config.number).to be_true
|
228
|
+
end
|
229
|
+
|
230
|
+
it "letters_lower should be a default" do
|
231
|
+
expect(config.letters_lower).to eq(("a".."z").to_a)
|
232
|
+
end
|
233
|
+
|
234
|
+
it "letters_upper should be a default" do
|
235
|
+
expect(config.letters_upper).to eq(("A".."Z").to_a)
|
236
|
+
end
|
237
|
+
|
238
|
+
it "letters_number should be a default" do
|
239
|
+
expect(config.letters_number).to eq(("0".."9").to_a)
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
@@ -3,7 +3,6 @@
|
|
3
3
|
require "spec_helper"
|
4
4
|
|
5
5
|
describe Passwd::Password do
|
6
|
-
let(:default) {@default}
|
7
6
|
let(:password) {Passwd::Password.new}
|
8
7
|
|
9
8
|
describe "#initialize" do
|
@@ -21,7 +20,7 @@ describe Passwd::Password do
|
|
21
20
|
}
|
22
21
|
|
23
22
|
it "@text should be a random password" do
|
24
|
-
expect(password.text.size).to eq(
|
23
|
+
expect(password.text.size).to eq(8)
|
25
24
|
expect(password.text).to eq(password_text)
|
26
25
|
end
|
27
26
|
|
data/spec/passwd_spec.rb
CHANGED
@@ -3,45 +3,13 @@
|
|
3
3
|
require "spec_helper"
|
4
4
|
|
5
5
|
describe Passwd do
|
6
|
-
let(:default) {
|
7
|
-
|
8
|
-
describe "default settings" do
|
9
|
-
let(:config) {Passwd.config}
|
10
|
-
|
11
|
-
it "length should be a default" do
|
12
|
-
expect(config[:length]).to eq(default[:length])
|
13
|
-
end
|
14
|
-
|
15
|
-
it "lower should be a default" do
|
16
|
-
expect(config[:lower]).to eq(default[:lower])
|
17
|
-
end
|
18
|
-
|
19
|
-
it "upper should be a default" do
|
20
|
-
expect(config[:upper]).to eq(default[:upper])
|
21
|
-
end
|
22
|
-
|
23
|
-
it "number should be a default" do
|
24
|
-
expect(config[:number]).to eq(default[:number])
|
25
|
-
end
|
26
|
-
|
27
|
-
it "letters_lower should be a default" do
|
28
|
-
expect(config[:letters_lower]).to eq(default[:letters_lower])
|
29
|
-
end
|
30
|
-
|
31
|
-
it "letters_upper should be a default" do
|
32
|
-
expect(config[:letters_upper]).to eq(default[:letters_upper])
|
33
|
-
end
|
34
|
-
|
35
|
-
it "letters_number should be a default" do
|
36
|
-
expect(config[:letters_number]).to eq(default[:letters_number])
|
37
|
-
end
|
38
|
-
end
|
6
|
+
let(:default) {Passwd::Configuration.new}
|
39
7
|
|
40
8
|
describe ".create" do
|
41
9
|
it "create random password" do
|
42
10
|
password = Passwd.create
|
43
11
|
expect(password.is_a? String).to be_true
|
44
|
-
expect(password.size).to eq(default
|
12
|
+
expect(password.size).to eq(default.length)
|
45
13
|
end
|
46
14
|
|
47
15
|
it "password was created specified characters" do
|
@@ -50,17 +18,17 @@ describe Passwd do
|
|
50
18
|
|
51
19
|
it "password create without lower case" do
|
52
20
|
password = Passwd.create lower: false
|
53
|
-
expect(default
|
21
|
+
expect(default.letters_lower.include? password).to be_false
|
54
22
|
end
|
55
23
|
|
56
24
|
it "password create without upper case" do
|
57
25
|
password = Passwd.create upper: false
|
58
|
-
expect(default
|
26
|
+
expect(default.letters_upper.include? password).to be_false
|
59
27
|
end
|
60
28
|
|
61
29
|
it "password create without number" do
|
62
30
|
password = Passwd.create(number: false)
|
63
|
-
expect(default
|
31
|
+
expect(default.letters_number.include? password).to be_false
|
64
32
|
end
|
65
33
|
end
|
66
34
|
|
@@ -96,42 +64,74 @@ describe Passwd do
|
|
96
64
|
end
|
97
65
|
end
|
98
66
|
|
99
|
-
describe ".
|
100
|
-
after {Passwd.
|
67
|
+
describe ".configure" do
|
68
|
+
after {Passwd.reset_config}
|
101
69
|
|
102
|
-
it "return
|
103
|
-
expect(Passwd.
|
70
|
+
it "return configuration object" do
|
71
|
+
expect(Passwd.configure.is_a? Passwd::Configuration).to be_true
|
104
72
|
end
|
105
73
|
|
106
|
-
it "set config value" do
|
107
|
-
Passwd.
|
108
|
-
|
109
|
-
|
74
|
+
it "set config value from block" do
|
75
|
+
Passwd.configure do |c|
|
76
|
+
c.length = 10
|
77
|
+
end
|
78
|
+
expect(Passwd.configure.length).not_to eq(default.length)
|
79
|
+
expect(Passwd.configure.length).to eq(10)
|
110
80
|
end
|
111
|
-
end
|
112
81
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
expect(
|
117
|
-
expect(letters.select{|s| s.is_a? String}).to eq(letters)
|
118
|
-
expect(letters).to eq(default[:letters_lower] + default[:letters_upper] + default[:letters_number])
|
82
|
+
it "set config value from hash" do
|
83
|
+
Passwd.configure length: 20
|
84
|
+
expect(Passwd.config.length).not_to eq(default.length)
|
85
|
+
expect(Passwd.config.length).to eq(20)
|
119
86
|
end
|
120
87
|
|
121
|
-
it "
|
122
|
-
expect(
|
88
|
+
it "alias of configure as config" do
|
89
|
+
expect(Passwd.configure.object_id).to eq(Passwd.config.object_id)
|
123
90
|
end
|
124
91
|
end
|
125
92
|
|
126
|
-
describe ".
|
127
|
-
|
128
|
-
|
129
|
-
|
93
|
+
describe ".reset_config" do
|
94
|
+
let(:config) {Passwd.config}
|
95
|
+
|
96
|
+
before {
|
97
|
+
config.configure do |c|
|
98
|
+
c.length = 20
|
99
|
+
c.lower = false
|
100
|
+
c.upper = false
|
101
|
+
c.number = false
|
102
|
+
c.letters_lower = ["a"]
|
103
|
+
c.letters_upper = ["A"]
|
104
|
+
c.letters_number = ["0"]
|
105
|
+
end
|
106
|
+
config.reset
|
107
|
+
}
|
108
|
+
|
109
|
+
it "length should be a default" do
|
110
|
+
expect(config.length).to eq(8)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "lower should be a default" do
|
114
|
+
expect(config.lower).to be_true
|
115
|
+
end
|
116
|
+
|
117
|
+
it "upper should be a default" do
|
118
|
+
expect(config.upper).to be_true
|
119
|
+
end
|
120
|
+
|
121
|
+
it "number should be a default" do
|
122
|
+
expect(config.number).to be_true
|
130
123
|
end
|
131
124
|
|
132
|
-
it "
|
133
|
-
config
|
134
|
-
|
125
|
+
it "letters_lower should be a default" do
|
126
|
+
expect(config.letters_lower).to eq(("a".."z").to_a)
|
127
|
+
end
|
128
|
+
|
129
|
+
it "letters_upper should be a default" do
|
130
|
+
expect(config.letters_upper).to eq(("A".."Z").to_a)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "letters_number should be a default" do
|
134
|
+
expect(config.letters_number).to eq(("0".."9").to_a)
|
135
135
|
end
|
136
136
|
end
|
137
137
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,19 +1,15 @@
|
|
1
|
-
require "
|
2
|
-
|
1
|
+
require "simplecov"
|
3
2
|
require "coveralls"
|
4
3
|
Coveralls.wear!
|
5
4
|
|
5
|
+
# SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
6
|
+
SimpleCov.start do
|
7
|
+
add_filter "spec"
|
8
|
+
add_filter ".bundle"
|
9
|
+
end
|
10
|
+
|
11
|
+
require "passwd"
|
12
|
+
|
6
13
|
RSpec.configure do |config|
|
7
14
|
config.order = "random"
|
8
|
-
config.before do
|
9
|
-
@default = {
|
10
|
-
length: 8,
|
11
|
-
lower: true,
|
12
|
-
upper: true,
|
13
|
-
number: true,
|
14
|
-
letters_lower: ('a'..'z').to_a,
|
15
|
-
letters_upper: ('A'..'Z').to_a,
|
16
|
-
letters_number: ('0'..'9').to_a
|
17
|
-
}
|
18
|
-
end
|
19
15
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: passwd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- i2bskn
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-06-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,33 +27,29 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
description: The various utilities on password
|
@@ -75,46 +68,42 @@ files:
|
|
75
68
|
- Rakefile
|
76
69
|
- lib/passwd.rb
|
77
70
|
- lib/passwd/active_record.rb
|
71
|
+
- lib/passwd/configuration.rb
|
78
72
|
- lib/passwd/password.rb
|
79
73
|
- lib/passwd/version.rb
|
80
74
|
- passwd.gemspec
|
81
75
|
- spec/passwd/active_record_spec.rb
|
76
|
+
- spec/passwd/configuration_spec.rb
|
82
77
|
- spec/passwd/password_spec.rb
|
83
78
|
- spec/passwd_spec.rb
|
84
79
|
- spec/spec_helper.rb
|
85
80
|
homepage: https://github.com/i2bskn/passwd
|
86
81
|
licenses:
|
87
82
|
- MIT
|
83
|
+
metadata: {}
|
88
84
|
post_install_message:
|
89
85
|
rdoc_options: []
|
90
86
|
require_paths:
|
91
87
|
- lib
|
92
88
|
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
89
|
requirements:
|
95
|
-
- -
|
90
|
+
- - '>='
|
96
91
|
- !ruby/object:Gem::Version
|
97
92
|
version: '0'
|
98
|
-
segments:
|
99
|
-
- 0
|
100
|
-
hash: 35413922955959980
|
101
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
94
|
requirements:
|
104
|
-
- -
|
95
|
+
- - '>='
|
105
96
|
- !ruby/object:Gem::Version
|
106
97
|
version: '0'
|
107
|
-
segments:
|
108
|
-
- 0
|
109
|
-
hash: 35413922955959980
|
110
98
|
requirements: []
|
111
99
|
rubyforge_project:
|
112
|
-
rubygems_version:
|
100
|
+
rubygems_version: 2.0.0
|
113
101
|
signing_key:
|
114
|
-
specification_version:
|
102
|
+
specification_version: 4
|
115
103
|
summary: Password utility
|
116
104
|
test_files:
|
117
105
|
- spec/passwd/active_record_spec.rb
|
106
|
+
- spec/passwd/configuration_spec.rb
|
118
107
|
- spec/passwd/password_spec.rb
|
119
108
|
- spec/passwd_spec.rb
|
120
109
|
- spec/spec_helper.rb
|