fixed_length_encoder 0.0.1
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/lib/fixed_length_encoder.rb +25 -0
- metadata +48 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
class FixedLengthEncoder
|
2
|
+
ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
3
|
+
BASE = ALPHABET.length
|
4
|
+
|
5
|
+
def self.encode(value, length = 8)
|
6
|
+
raise ArgumentError, 'Cannot encode a non-Integer.' unless value.is_a?(Integer)
|
7
|
+
message = ''
|
8
|
+
while (value > 0)
|
9
|
+
remainder = value % BASE
|
10
|
+
message += ALPHABET[remainder]
|
11
|
+
value = (value - remainder)/BASE
|
12
|
+
end
|
13
|
+
message
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.decode(message)
|
17
|
+
value = 0
|
18
|
+
message.reverse.split('').each do |digit|
|
19
|
+
index = ALPHABET.index(digit)
|
20
|
+
raise ArgumentError, 'Invalid character' if index.nil?
|
21
|
+
value = (value * BASE) + index
|
22
|
+
end
|
23
|
+
value
|
24
|
+
end
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fixed_length_encoder
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Brett Pontarelli
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-12-13 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Integers are converted to 6 or 8 digit strings using a binary reversal
|
15
|
+
and a shuffled base 62 alphabet. Strings with valid digits (0-9 a-z A-z)are converted
|
16
|
+
back to integers. The encoding is one-to-one but not sequential.This is useful
|
17
|
+
for obfuscating user ids in urls.
|
18
|
+
email: brett@paperyfrog.com
|
19
|
+
executables: []
|
20
|
+
extensions: []
|
21
|
+
extra_rdoc_files: []
|
22
|
+
files:
|
23
|
+
- lib/fixed_length_encoder.rb
|
24
|
+
homepage: http://rubygems.org/gems/fixed_length_encoder
|
25
|
+
licenses: []
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
none: false
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project:
|
44
|
+
rubygems_version: 1.8.24
|
45
|
+
signing_key:
|
46
|
+
specification_version: 3
|
47
|
+
summary: Two way conversion from integer to a fixed 6 or 8 digit string.
|
48
|
+
test_files: []
|