random_string 0.0.1 → 0.0.2
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.
- data/.travis.yml +6 -0
- data/README.rdoc +2 -0
- data/lib/random_string/main.rb +1 -1
- data/lib/random_string/sample_string.rb +41 -7
- data/lib/random_string/sample_string/data.rb +27 -15
- data/lib/random_string/version.rb +1 -1
- data/spec/random_string/sample_string_spec.rb +46 -9
- metadata +2 -1
data/.travis.yml
ADDED
data/README.rdoc
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
= RandomString
|
2
|
+
{<img src="https://badge.fury.io/rb/random_string.png" alt="Gem Version" />}[http://badge.fury.io/rb/random_string]
|
3
|
+
{<img src="https://travis-ci.org/nqtien310/random_string.png?branch=master" alt="Build Status" />}[https://travis-ci.org/nqtien310/random_string]
|
2
4
|
|
3
5
|
Ruby library which generates strings which match a regular expression
|
4
6
|
|
data/lib/random_string/main.rb
CHANGED
@@ -10,24 +10,58 @@ module RandomString
|
|
10
10
|
|
11
11
|
private
|
12
12
|
|
13
|
-
def sample_strings
|
14
|
-
|
13
|
+
def sample_strings
|
14
|
+
private_methods.select { |method| method =~ /_data$/ }.inject([]) do |all, method|
|
15
|
+
all << eval(method.to_s)
|
16
|
+
end.flatten.compact.uniq.shuffle
|
15
17
|
end
|
16
18
|
|
17
|
-
def
|
18
|
-
|
19
|
+
def stored_data
|
20
|
+
( stored_strings + capitalize_stored_strings + dot_prefix_stored_strings ).flatten.uniq
|
19
21
|
end
|
20
22
|
|
21
|
-
def
|
23
|
+
def random_digits_data
|
22
24
|
random_strings(Digits)
|
23
25
|
end
|
24
26
|
|
25
|
-
def
|
27
|
+
def random_chars_data
|
26
28
|
random_strings(LowerCaseChars + UpperCaseChars)
|
27
29
|
end
|
28
30
|
|
31
|
+
def percentages_data
|
32
|
+
(1..100).map { |n| "#{n}%"}
|
33
|
+
end
|
34
|
+
|
35
|
+
def digits_data
|
36
|
+
Digits
|
37
|
+
end
|
38
|
+
|
39
|
+
def lower_case_chars_data
|
40
|
+
LowerCaseChars
|
41
|
+
end
|
42
|
+
|
43
|
+
def upper_case_chars_data
|
44
|
+
UpperCaseChars
|
45
|
+
end
|
46
|
+
|
47
|
+
def floats_data
|
48
|
+
(0...1).step(0.01).to_a.map.each {|f| f.round(2).to_s}
|
49
|
+
end
|
50
|
+
|
51
|
+
def stored_strings
|
52
|
+
Data::StoredStrings.values.flatten
|
53
|
+
end
|
54
|
+
|
55
|
+
def capitalize_stored_strings
|
56
|
+
( Data::CapitalStoredStrings.values + Data::CapitalStoredStrings.values.flatten.map(&:capitalize) ).flatten
|
57
|
+
end
|
58
|
+
|
59
|
+
def dot_prefix_stored_strings
|
60
|
+
( Data::DotPrefixStoredStrings.values + Data::DotPrefixStoredStrings.values.flatten.map { |v| ".#{v}"} ).flatten
|
61
|
+
end
|
62
|
+
|
29
63
|
def random_strings(base)
|
30
64
|
(1..GenerateCount).map { |length| length.times.inject('') { |initial, n| initial + base[rand(base.size-1)].to_s } }
|
31
|
-
end
|
65
|
+
end
|
32
66
|
end
|
33
67
|
end
|
@@ -6,26 +6,38 @@ module RandomString
|
|
6
6
|
:Urls => ['www.domain.com', 'www.domain.subdomain.com', 'http://www.domain.com', 'http://www.domain.subdomain.com',
|
7
7
|
'http://www.domain.com/path/1', 'https://www.domain.com', 'https://www.domain.subdomain.com', 'domain.subdomain.com',
|
8
8
|
'domain.com/path/1', 'subdomain.domain.com/path/1'],
|
9
|
-
:IPS => ['192.168.1.1', '192.168.1.2'],
|
10
|
-
:Sex => ['male', 'female', 'gay', 'les', 'other'],
|
9
|
+
:IPS => ['192.168.1.1', '192.168.1.2'],
|
11
10
|
:Zips => ['10001', '10002', '10003'],
|
12
|
-
:Phones => ['732-757-2923', '1732-757-2923', '+84 121731845', '84 121731845', '(84) 121731845'
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
'am', 'pm'],
|
17
|
-
:Countries => ['Vietnam', 'America', 'England', 'Vietnamese', 'American', 'English'],
|
18
|
-
:Cities => ['New York', 'London', 'Ho Chi Minh'],
|
19
|
-
:Statuses => ['married', 'single', 'available', 'complicated'],
|
20
|
-
:Files => ['filename.txt', 'filename.jpg', 'filename.png', 'filename.jpeg'],
|
21
|
-
:Extensions => ['txt', 'jpg', 'png', 'jpeg', 'mp4', 'mp3', 'wmv'],
|
11
|
+
:Phones => ['732-757-2923', '1732-757-2923', '+84 121731845', '84 121731845', '(84) 121731845', '754-3010',
|
12
|
+
'(541) 754-3010', '+1-541-754-3010', '1-541-754-3010'],
|
13
|
+
:Datetimes => ['1999-01-01', '99-01-01', '1999/01/01', '99/01/01', '01/01/99', '03/10/1986', '01-01-1999', '01-01-99', 'January 07, 2013'],
|
14
|
+
:Files => ['filename.txt', 'filename.jpg', 'filename.png', 'filename.jpeg'],
|
22
15
|
:Videos => ['filename.wmv', 'filename.mp4', 'filename.flv'],
|
23
16
|
:CCNumbers => ['4111 1111 1111 1111', '5500 0000 0000 0004', '3400 0000 0000 009', '3000 0000 0000 04'],
|
24
17
|
:CCodes => ['84', '1', '39'],
|
25
|
-
:ISOCCodes => ['US', 'USA', 'VN', 'VNM']
|
26
|
-
|
18
|
+
:ISOCCodes => ['US', 'USA', 'VN', 'VNM']
|
19
|
+
}
|
20
|
+
|
21
|
+
DotPrefixStoredStrings = {
|
22
|
+
:Extensions => ['txt', 'jpg', 'png', 'jpeg', 'mp4', 'mp3', 'wmv', 'exe', 'dmg', 'jar', 'tar', 'zip', 'gif', 'pdf'],
|
23
|
+
:LanguageExts => ['java', 'rb', 'php', 'asp','html', 'xhtml', 'js', 'pl', 'py', 'xml', 'rss', 'css','cgi', 'dll', 'rss', 'markdown'],
|
24
|
+
:Domains => ['com', 'org', 'net', 'us', 'vn', 'edu', 'gov', 'biz', 'info', 'tv', 'uk']
|
25
|
+
}
|
26
|
+
|
27
|
+
CapitalStoredStrings = {
|
28
|
+
:Services => ['yahoo', 'google', 'facebook', 'amazone', 'youtube', 'paypal', 'alchemy', 'github',
|
29
|
+
'rubygems', 'travis', 'open calais', 'engine yard', 'netflix', 'dropbox', 'flickr', 'pandora one',
|
30
|
+
'evernote', 'xmarks', 'lastpass' ],
|
31
|
+
:Countries => ['Vietnam', 'America', 'England', 'Vietnamese', 'American', 'English'],
|
32
|
+
:Cities => ['New York', 'London', 'Ho Chi Minh'],
|
33
|
+
:Datestimes => ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday',
|
34
|
+
'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december',
|
35
|
+
'am', 'pm'],
|
36
|
+
:Sex => ['male', 'female', 'gay', 'les', 'other'],
|
37
|
+
:Statuses => ['married', 'single', 'available', 'complicated'],
|
27
38
|
:Marks => ['excellent', 'good', 'bad']
|
39
|
+
|
28
40
|
}
|
29
41
|
end
|
30
42
|
end
|
31
|
-
end
|
43
|
+
end
|
@@ -3,15 +3,15 @@ require 'spec_helper'
|
|
3
3
|
describe "RandomString::SampleString" do
|
4
4
|
include RandomString::SampleString
|
5
5
|
|
6
|
-
describe "#
|
6
|
+
describe "#stored_data" do
|
7
7
|
it 'should return an array of string' do
|
8
|
-
send(:
|
9
|
-
send(:
|
8
|
+
send(:stored_data).should be_an Array
|
9
|
+
send(:stored_data).should_not be_empty
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
describe '#random_digits' do
|
14
|
-
let(:random_digits) { send(:
|
14
|
+
let(:random_digits) { send(:random_digits_data) }
|
15
15
|
|
16
16
|
it 'should return array with maximum size config in SampleString::GenerateCount' do
|
17
17
|
random_digits.size.should eq RandomString::SampleString::GenerateCount
|
@@ -23,7 +23,7 @@ describe "RandomString::SampleString" do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
describe '#random_chars' do
|
26
|
-
let(:random_chars) { send(:
|
26
|
+
let(:random_chars) { send(:random_chars_data) }
|
27
27
|
|
28
28
|
it 'should return array with maximum size config in SampleString::GenerateCount' do
|
29
29
|
random_chars.size.should eq RandomString::SampleString::GenerateCount
|
@@ -34,14 +34,51 @@ describe "RandomString::SampleString" do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
describe '#percentage_data' do
|
38
|
+
it 'should contain percentage numbers' do
|
39
|
+
pd = send(:percentages_data)
|
40
|
+
pd.size.should == 100
|
41
|
+
pd.should be_include("50%")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#floats_data' do
|
46
|
+
it 'should contain float numbers from 0 to 1 step 0.01' do
|
47
|
+
pd = send(:floats_data)
|
48
|
+
pd.size.should == 100
|
49
|
+
pd.should be_include("0.99")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#capitalize_stored_strings' do
|
54
|
+
it 'should contain both lower case and capitalize words' do
|
55
|
+
css = send(:capitalize_stored_strings)
|
56
|
+
css.should be_include('yahoo')
|
57
|
+
css.should be_include('Yahoo')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#dot_prefix_stored_strings' do
|
62
|
+
it 'should contain both normal works words as extensions' do
|
63
|
+
dpss = send(:dot_prefix_stored_strings)
|
64
|
+
dpss.should be_include('rb')
|
65
|
+
dpss.should be_include('.rb')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
37
69
|
describe '#sample_strings' do
|
38
70
|
before do
|
39
|
-
should_receive(:
|
40
|
-
should_receive(:
|
41
|
-
should_receive(:
|
71
|
+
should_receive(:random_chars_data).once.and_return [1]
|
72
|
+
should_receive(:random_digits_data).once.and_return [2]
|
73
|
+
should_receive(:stored_data).once.and_return [3]
|
74
|
+
should_receive(:percentages_data).once.and_return(4)
|
75
|
+
should_receive(:floats_data).once.and_return(5)
|
76
|
+
should_receive(:digits_data).once.and_return(6)
|
77
|
+
should_receive(:lower_case_chars_data).once.and_return(7)
|
78
|
+
should_receive(:upper_case_chars_data).once.and_return([8,9])
|
42
79
|
end
|
43
80
|
|
44
|
-
it 'should return an unique array which is a combination of
|
81
|
+
it 'should return an unique array which is a combination of stored_data, random_digits, random_chars' do
|
45
82
|
send(:sample_strings).sort.should eq [1,2,3,4,5,6,7,8,9]
|
46
83
|
end
|
47
84
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: random_string
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -54,6 +54,7 @@ files:
|
|
54
54
|
- .rdebugrc
|
55
55
|
- .rspec
|
56
56
|
- .rvmrc
|
57
|
+
- .travis.yml
|
57
58
|
- Gemfile
|
58
59
|
- LICENSE.txt
|
59
60
|
- README.rdoc
|