ruby_xid 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruby_xid.rb +24 -24
  3. data/lib/xid/base32.rb +9 -9
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f11215b569bbc9b0acc216e30731fcd0dc84a3a26d7e771c131820ede1e0f8d
4
- data.tar.gz: 44dc8ffb01a7a9409699af142df483c30056afa5d981925deb35b9476dbb433c
3
+ metadata.gz: 57563aac1f71f9bc79cbaf1431aee6a660499b4ccab42f87570701e585017822
4
+ data.tar.gz: c04e68b3bb859fdff627fbda865ab3290ba03d197eadcd11724c0e807850f8cc
5
5
  SHA512:
6
- metadata.gz: c1b5be1db1fc6c817d78ba1fff9229c69c7d9d5a5ba83a40c1302f5f23bf8adea0837e53a03eb93faf7505b5d4e581aab43351c73dbefc27fbfd763bd3eb2c67
7
- data.tar.gz: 6ae7fe4347442396c7ccc7fb6ae8240329f0ef9b9290ca14da7cf899a9befbfa1e96143abf7fb9857f931982b95f3af4e2dc52799392cf46769c66ae1c5afe8f
6
+ metadata.gz: 33d37db8dd796f96005337236f2552d5a896c390e7a92378a4cc174832ddb7cf75542627ded93d8f2e51d81f5651fc982d02adcecdae7db2fc40d0995eb440e6
7
+ data.tar.gz: f64ca53e6f4b0f0ca2a43827e6c8f2c5f1b6cd0dcba94b87d2c26f1c44e040f0c63e7d8ed90e9f1cf9b96571f6e313fd93bbf12ae49c1db693ad315f13fb5311
data/lib/ruby_xid.rb CHANGED
@@ -7,23 +7,22 @@ require 'date'
7
7
  class Xid
8
8
 
9
9
  RAW_LEN = 12
10
- TRIM_LEN = 20
11
10
 
12
11
  @@generator = nil
13
12
 
14
13
  def initialize(id = nil)
15
14
  @@generator ||= Generator.new(init_rand_int, real_machine_id)
16
- @byte_str = id ? id.map(&:chr).join('') : @@generator.next_xid
15
+ @value = id ? id : @@generator.generate_data.unpack('C12')
17
16
  end
18
17
 
19
18
  def next
20
- @string = @value = nil
21
- @byte_str = @@generator.next_xid
19
+ @string = nil
20
+ @value = @@generator.generate_data.unpack('C12')
22
21
  string
23
22
  end
24
23
 
25
24
  def value
26
- @value ||= @byte_str.chars.map(&:ord)
25
+ @value
27
26
  end
28
27
 
29
28
  def pid
@@ -58,26 +57,9 @@ class Xid
58
57
  string
59
58
  end
60
59
 
61
- def string
62
- # type: () -> str
63
- @string ||= Base32.b32encode(value)[0..TRIM_LEN - 1]
64
- end
65
-
66
60
  def bytes
67
61
  # type: () -> str
68
- @byte_str
69
- end
70
-
71
- def init_rand_int
72
- # type: () -> int
73
- SecureRandom.random_number(16_777_215)
74
- end
75
-
76
- def real_machine_id
77
- # type: () -> int
78
- Digest::MD5.digest(Socket.gethostname).unpack('N')[0]
79
- rescue
80
- init_rand_int
62
+ @value.map(&:chr).join('')
81
63
  end
82
64
 
83
65
  def ==(other_xid)
@@ -108,6 +90,24 @@ class Xid
108
90
  Object.const_get(name).new(val)
109
91
  end
110
92
 
93
+ private
94
+ def string
95
+ # type: () -> str
96
+ @string ||= Base32.b32encode(value)
97
+ end
98
+
99
+ def init_rand_int
100
+ # type: () -> int
101
+ SecureRandom.random_number(16_777_215)
102
+ end
103
+
104
+ def real_machine_id
105
+ # type: () -> int
106
+ Digest::MD5.digest(Socket.gethostname).unpack('N')[0]
107
+ rescue
108
+ init_rand_int
109
+ end
110
+
111
111
  # Xid Generator
112
112
  class Generator
113
113
  attr_accessor :value
@@ -119,7 +119,7 @@ class Xid
119
119
  @machine_id = machine_id
120
120
  end
121
121
 
122
- def next_xid
122
+ def generate_data
123
123
  # () -> str
124
124
  @mutex.synchronize do
125
125
  @rand_int += 1
data/lib/xid/base32.rb CHANGED
@@ -3,6 +3,7 @@ class Xid::Base32
3
3
 
4
4
  # 0123456789abcdefghijklmnopqrstuv - Used for encoding
5
5
  ENCODE_HEX = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v"].freeze
6
+ TRIM_LEN = 20
6
7
 
7
8
  # Start class methods
8
9
  class << self
@@ -12,18 +13,16 @@ class Xid::Base32
12
13
  end
13
14
 
14
15
  def b32encode(src)
15
- encode(src, ENCODE_HEX)
16
+ encode(src)
16
17
  end
17
18
 
18
19
  def b32decode(src)
19
20
  decode(src, ENCODE_HEX)
20
21
  end
21
22
 
22
- def encode(src_str, str_map)
23
- return '' if src_str.empty?
24
-
25
- dst = []
26
- while src_str && !src_str.empty?
23
+ def encode(src_str)
24
+ dst = ''
25
+ 3.times do |i|
27
26
  src_len = src_str.length
28
27
  next_byte = Array.new(8, 0)
29
28
 
@@ -50,13 +49,14 @@ class Xid::Base32
50
49
  next_byte[0] = src_str[0] >> 3
51
50
  end
52
51
 
52
+ src_str = src_str[5..src_str.length]
53
+ next_byte = next_byte[0..3] if i == 2
53
54
  next_byte.each do |nb|
54
- dst << str_map[nb]
55
+ dst += ENCODE_HEX[nb]
55
56
  end
56
- src_str = src_str[5..src_str.length]
57
57
  end
58
58
 
59
- dst.join('')
59
+ dst
60
60
  end
61
61
 
62
62
  def decode(src, str_map)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_xid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valarpiraichandran
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-14 00:00:00.000000000 Z
11
+ date: 2019-12-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: a.valarpirai@gmail.com