char_pool 1.0.1 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a501ac1f22437e0c0ff4feaaddb4ef06cd2db5d
4
- data.tar.gz: fc45a49fa20cb3565221ebf9b62d07886afe9b85
3
+ metadata.gz: c34ded892ef60212db978aa48a595a3e04e2e405
4
+ data.tar.gz: 3f436230efc4806ab276135531c500c48008b176
5
5
  SHA512:
6
- metadata.gz: 52b3d5a4e4ee68a1e8aa695868e7def6fa94d8b83db45e91df12cf4925b25823df1bc3dd4028f63458ac947c116c47e46fd9b04931e2c48ac23ba3fc068d8185
7
- data.tar.gz: b0e2060d5a6322c54ddf38193c0793f2684de8018f875bc427a36168fa44c97e86acfebc846950a79d7df2f888d04f4ab561bbf235c5fb30173772bb1fa00e56
6
+ metadata.gz: 87b928e46d8b89e1e301021c8cd844f5dfad839d729d5ff30ab2573a3fd3ef51903bea151ba107924a708ee8f240b0cf9550c3f2148850749dc65363ace0243c
7
+ data.tar.gz: 67d5d392c06058911ebc636a02f68396903785fafcb3b01a049b81e91d2a8bc97fba01398d04c0ca890b172ae893ce35cc1d3a602d3d06b4513e50debf90eb5f
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # CharPool
2
2
 
3
- This gem will iterate over your chars set, for example if you have chars set ['a', 'b', 'c'], this gem will produce
3
+ This gem will iterate over your chars set, for example if you have chars set `['a', 'b', 'c']`, this gem will produce
4
4
 
5
5
  ```ruby
6
6
  0 = a
@@ -31,29 +31,7 @@ This gem will iterate over your chars set, for example if you have chars set ['a
31
31
  19 = acb
32
32
  20 = acc
33
33
 
34
- 21 = baa
35
- 22 = bab
36
- 23 = bac
37
-
38
- 24 = bba
39
- 25 = bbb
40
- 26 = bbc
41
-
42
- 27 = bca
43
- 28 = bcb
44
- 29 = bcc
45
-
46
- 30 = caa
47
- 31 = cab
48
- 32 = cac
49
-
50
- 33 = cba
51
- 34 = cbb
52
- 35 = cbc
53
-
54
- 36 = cca
55
- 37 = ccb
56
- 38 = ccc
34
+ ...
57
35
 
58
36
  39 = aaaa
59
37
 
@@ -89,15 +67,18 @@ char_pool.next #=> c
89
67
  char_pool.next #=> aa
90
68
  char_pool.next #=> ab
91
69
  char_pool.next #=> ac
70
+ ```
92
71
 
93
- char_pool.index_of(9) #=> ca
94
- char_pool.index_of(39) #=> aaaa
72
+ You can use this as a drop replacement for your URL shortener engine.
73
+ No need to store your shortened URL as key and value in database, you can just encode database id as the key.
95
74
 
96
- char_pool.index('ca') #=> 9
97
- char_pool.index('aaaa') #=> 39
98
- ```
75
+ ```ruby
76
+ char_pool = CharPool.new(('a'..'z').to_a + ('A'..'Z').to_a + (0..9).to_a)
99
77
 
100
- TODO: more example and usage
78
+ char_pool.index_at(100_000_000_000_000) #=> BxHCH9jC
79
+
80
+ char_pool.index('BxHCH9jC') #=> 100_000_000_000_000
81
+ ```
101
82
 
102
83
  ## Development
103
84
 
data/char_pool.gemspec CHANGED
@@ -20,5 +20,4 @@ Gem::Specification.new do |spec|
20
20
  spec.add_development_dependency "bundler", "~> 1.11"
21
21
  spec.add_development_dependency "rake", "~> 10.0"
22
22
  spec.add_development_dependency "rspec", "~> 3.0"
23
- spec.add_development_dependency "pry"
24
23
  end
@@ -1,3 +1,3 @@
1
1
  class CharPool
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
data/lib/char_pool.rb CHANGED
@@ -2,7 +2,10 @@ require 'char_pool/version'
2
2
 
3
3
  class CharPool
4
4
  def initialize(char_pool)
5
- @char_pool = char_pool.map &:to_s
5
+ raise(ArgumentError, 'Pool should be array') unless char_pool.is_a?(Array)
6
+ raise(ArgumentError, 'Pool cannot be empty') if char_pool.empty?
7
+
8
+ @char_pool = char_pool.uniq.map &:to_s
6
9
  end
7
10
 
8
11
  def start(current = @char_pool.first)
@@ -34,8 +37,9 @@ class CharPool
34
37
 
35
38
  private
36
39
  def decode(string)
37
- array = string.split('').map do |char|
40
+ return string.length if @char_pool.length == 1
38
41
 
42
+ array = string.split('').map do |char|
39
43
  @char_pool.index(char)
40
44
  end
41
45
 
@@ -47,7 +51,8 @@ class CharPool
47
51
  end
48
52
 
49
53
  def encode(number)
50
- return [0] if number.zero?
54
+ return [0] if number.zero?
55
+ return [0] * number if @char_pool.length == 1
51
56
 
52
57
  seq_index = 0
53
58
  length = @char_pool.length
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: char_pool
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Teja Sophista V.R.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-12 00:00:00.000000000 Z
11
+ date: 2016-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
- - !ruby/object:Gem::Dependency
56
- name: pry
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
55
  description:
70
56
  email:
71
57
  - tejanium@yahoo.com