alphabetify 0.0.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/alphabetify.rb +26 -2
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 731e60870ea48aa0ccbd2f0e3ecce3baaac14691
4
- data.tar.gz: 270769c73e48152a5d9972961873b8534f59cd9e
3
+ metadata.gz: 02f07cc8b6cc6f304ef789f4f732b5248b69a6c9
4
+ data.tar.gz: c1b89100099513adc28aec0ddbf5450f3de155a6
5
5
  SHA512:
6
- metadata.gz: 03a5c4343255724d9397fed1f100be963006984f8aceb824f3f60514c03412aebe1475b82275b9bc8f467cbc0e1847b8d25da6c6236cb283a1d70204e4fc5547
7
- data.tar.gz: 6eafe0611ddd572dd73ced9108c54b2102feec6a1b7118088563fe45b009cf0dbc991af1ee634f3e53beb99bcb4b5cb25722a32980452562282e1d894ed456ac
6
+ metadata.gz: 38eed0912931ae4b76113a163d0584353b3736545927a5bed2853b138e0de01067f6f0091e53e0d62284cd14cf8a2d72928f744f5894fd78bc13ea8a5dd6c616
7
+ data.tar.gz: 0ef96b8a84d541dbb5c11488163a155aab6b40e1b24b27b8984164751035427bd41319236ac69378ddbb1d4e818177b06f72236727d7fb7fed4f85f5f21d3728
data/lib/alphabetify.rb CHANGED
@@ -19,7 +19,8 @@ class Alphabetify
19
19
  ###############################################################################################################
20
20
  HASH_CHARS = ('A'..'Z').to_a
21
21
 
22
- def self.generate_hash(str)
22
+ def self.generate_hash
23
+ str = get_last_hash
23
24
  complete = false
24
25
  new_hash = ''
25
26
  str.chars.reverse.each do |ch|
@@ -38,11 +39,33 @@ class Alphabetify
38
39
  if !complete
39
40
  new_hash.reverse! << HASH_CHARS.first
40
41
  end
41
- new_hash.reverse
42
+ result = new_hash.reverse
43
+ set_last_hash(result)
44
+ result
45
+ end
46
+
47
+ #This method can be used (preferably only once, to set the initial hash)
48
+ def self.seed_hash(seed)
49
+ #Check seed against HASH_CHARS. Throw error if any characters arent allowed
50
+ raise ArgumentError.new("The seed cannot be empty.") if seed.to_s.empty?
51
+ unless seed.to_s.each_char.detect{|c| !HASH_CHARS.include?(c) }
52
+ set_last_hash(seed)
53
+ get_last_hash
54
+ else
55
+ raise ArgumentError.new("The seed can only contain characters in #{HASH_CHARS.join}.")
56
+ end
42
57
  end
43
58
 
44
59
  private
45
60
 
61
+ def self.get_last_hash
62
+ File.read( File.join( __dir__, 'last-hash.txt' ) )
63
+ end
64
+
65
+ def self.set_last_hash(new_value)
66
+ File.open( File.join( __dir__, 'last-hash.txt' ), 'w+') {|f| f.write(new_value) }
67
+ end
68
+
46
69
  def self.get_next_char(char)
47
70
  unless char == HASH_CHARS.last
48
71
  return [char.next,false]
@@ -61,3 +84,4 @@ class Alphabetify
61
84
  end
62
85
 
63
86
  end
87
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alphabetify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todd Resudek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-18 00:00:00.000000000 Z
11
+ date: 2016-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -47,7 +47,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 1.9.3
50
+ version: 2.0.0
51
51
  required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
@@ -55,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
55
  version: '0'
56
56
  requirements: []
57
57
  rubyforge_project:
58
- rubygems_version: 2.4.4
58
+ rubygems_version: 2.4.5.1
59
59
  signing_key:
60
60
  specification_version: 4
61
61
  summary: Create unique alphabetical hashes