strgen 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 628517c35933dd11f6b3c2a5cc95175081325646
4
- data.tar.gz: cbc74078bc5a383cc84a9355bc1f4b45ace88122
3
+ metadata.gz: 79789edc5347ff826508218b4fe08e2a5fe9e07e
4
+ data.tar.gz: 695092343161e8fc6fb54e18556e286c470bbad8
5
5
  SHA512:
6
- metadata.gz: a5ed984381f9194d634e76e533a1e62213b92aee0cd2ce73e4b58a86557106f9924a1385946f1296889139ba0045bbefe7e489e20ce920502c948a6b11926195
7
- data.tar.gz: 4efc6d58905cf78c98e37190a98bb6a9ce2a239c8f688102258b35f013b2b18fdd935de41450b2c001dd44bb66392dc361e5617eaed43eac1ac79478d18fb0b5
6
+ metadata.gz: 4778b29071698bfb8905c92f9f6d72eff399025ae35e19bde6cb54d9f3d942c5b43cc800aab05e44670457d6ee8dd3d05b13f9a919a127ff93d4add66f19815c
7
+ data.tar.gz: e725a27b7d3a5b17cf82b5e0b9d064ca0f7d10da2ee93b1c8f265c0f9bb9ab887aa87ebf72a01105b66ef6bae64fa0868494bbd31ef0fad3041d01fe0fbd6129
data/.rspec CHANGED
@@ -1,2 +1 @@
1
- --format documentation
2
1
  --color
@@ -7,14 +7,25 @@ GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  coderay (1.1.0)
10
+ diff-lcs (1.2.5)
10
11
  method_source (0.8.2)
11
12
  pry (0.10.1)
12
13
  coderay (~> 1.1.0)
13
14
  method_source (~> 0.8.1)
14
15
  slop (~> 3.4)
15
16
  rake (10.4.2)
17
+ rspec (3.3.0)
18
+ rspec-core (~> 3.3.0)
19
+ rspec-expectations (~> 3.3.0)
20
+ rspec-mocks (~> 3.3.0)
16
21
  rspec-core (3.3.2)
17
22
  rspec-support (~> 3.3.0)
23
+ rspec-expectations (3.3.1)
24
+ diff-lcs (>= 1.2.0, < 2.0)
25
+ rspec-support (~> 3.3.0)
26
+ rspec-mocks (3.3.2)
27
+ diff-lcs (>= 1.2.0, < 2.0)
28
+ rspec-support (~> 3.3.0)
18
29
  rspec-support (3.3.0)
19
30
  slop (3.6.0)
20
31
 
@@ -25,5 +36,5 @@ DEPENDENCIES
25
36
  bundler (~> 1.9)
26
37
  pry
27
38
  rake (~> 10.0)
28
- rspec-core
39
+ rspec
29
40
  strgen!
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Strgen
1
+ # Strgen ![Build Status](https://api.travis-ci.org/ConnorAtherton/strgen.svg)
2
2
 
3
- A Ruby arbitrary string generator
3
+ An arbitrary Ruby string generator
4
4
 
5
5
  ## Usage
6
6
 
@@ -20,15 +20,15 @@ end
20
20
 
21
21
  Include these in the config block when generating the string (see above)
22
22
 
23
- **numbers** - Numbers 0-9
24
- **symbols**
25
- **lowercase** - The lowercase alphabet
26
- **uppercase** - The uppercase alphabet
27
- **alpha** - A combination of lowercase and uppercase letters.
28
- **alphanum** - A combination of the alpha set and numbers
29
- **length** - The length of the result string
30
- **repeat** - Whether repeated characters are allowed
31
- **exclude** - a character array containing individual letters to exclude
23
+ - **numbers** - Numbers 0-9
24
+ - **symbols** - The following set `[! @ # $ % ^ & ( ) { } [ ] - _ < > ?]`
25
+ - **lowercase** - The lowercase alphabet
26
+ - **uppercase** - The uppercase alphabet
27
+ - **alpha** - A combination of lowercase and uppercase letters.
28
+ - **alphanum** - A combination of the alpha set and numbers
29
+ - **length** - The length of the result string
30
+ - **repeat** - Whether repeated characters are allowed
31
+ - **exclude** - a character array containing individual letters to exclude
32
32
 
33
33
  #### Example
34
34
 
@@ -37,10 +37,10 @@ letters excluding the letters `A` and `B`.
37
37
 
38
38
  ```ruby
39
39
  Strgen.generate do |c|
40
- c.lowercase = false;
41
- c.numbers = false;
42
- c.symbols = false;
43
- c.length = 25;
40
+ c.lowercase = false
41
+ c.numbers = false
42
+ c.symbols = false
43
+ c.length = 25
44
44
  c.exclude = %w(A B)
45
45
  end
46
46
 
@@ -1,11 +1,10 @@
1
1
  require 'strgen/version'
2
- require 'pry'
3
2
 
4
3
  #
5
4
  # Usage:
6
5
  #
7
- # Strgen.generate do |config|
8
- # config.length = 10
6
+ # Strgen.generate do
7
+ # length = 10
9
8
  # exclude = %w(!)
10
9
  # end
11
10
  #
@@ -13,18 +12,27 @@ class Strgen
13
12
  NUMBERS = (1..9).to_a.map(&:to_s)
14
13
  LOWERCASE = ('a'..'z').to_a
15
14
  UPPERCASE = ('A'..'Z').to_a
16
- ALPHA = LOWERCASE.concat UPPERCASE
17
- ALPHANUM = ALPHA.concat NUMBERS
15
+ ALPHA = LOWERCASE.dup.concat UPPERCASE
16
+ ALPHANUM = ALPHA.dup.concat NUMBERS
18
17
  SYMBOLS = %w(! @ # $ % ^ & \( \) { } [ ] - _ < > ?)
19
18
  TYPES = %i(numbers lowercase uppercase symbols)
20
19
 
21
20
  attr_accessor *TYPES, :length, :alpha, :alphanum, :exclude, :repeat
22
21
 
22
+ # Errors
23
+ class InvalidLengthError < StandardError; end
24
+
23
25
  def self.generate(&block)
24
26
  proxy = new
25
- block.call(proxy) if block_given?
27
+
28
+ if block_given?
29
+ block.arity > 0 ? block.call(proxy) : proxy.instance_eval(&block)
30
+ end
31
+
26
32
  proxy.merge_defaults!
27
33
 
34
+ raise InvalidLengthError if proxy.length < 1
35
+
28
36
  previous = nil
29
37
  current = nil
30
38
  acc = ''
@@ -35,7 +43,6 @@ class Strgen
35
43
  proxy.length.times do
36
44
  loop do
37
45
  current = characters.sample
38
-
39
46
  break if !proxy.exclude?(current) && (!proxy.repeat || current != previous)
40
47
  end
41
48
 
@@ -50,8 +57,7 @@ class Strgen
50
57
  acc[type] = true
51
58
  acc
52
59
  end.tap do |hash|
53
- hash[:length] = 12
54
- hash[:repeat] = true
60
+ hash.merge! length: 12, repeat: true
55
61
  end.each do |method, default|
56
62
  next unless send(method.to_sym).nil?
57
63
  send("#{method}=".to_sym, default)
@@ -1,3 +1,3 @@
1
1
  class Strgen
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -21,6 +21,6 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.9"
23
23
  spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec-core"
24
+ spec.add_development_dependency "rspec"
25
25
  spec.add_development_dependency "pry"
26
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strgen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connor Atherton
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-20 00:00:00.000000000 Z
11
+ date: 2015-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec-core
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="