rubyflake 0.1.0 → 0.1.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rubyflake.rb +13 -3
  3. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3b4e92e938e501a17d7051b05eac6638b2328b4
4
- data.tar.gz: dd3472f19ee6df699e1c3e2dd20f28c68a406d12
3
+ metadata.gz: 1fcfe3d104d7112ba3190d507096b49a7a22c0ff
4
+ data.tar.gz: cf3774eab601a45a726fecbc88440e364284c050
5
5
  SHA512:
6
- metadata.gz: 9f0b909764d964b351257e35b78e8e88271f3b4a27ffb32f9dae73c4f22af517b21912976d812fd829a6abe62201f7f8c94ce716c9fd644a3d7c20196f0902a1
7
- data.tar.gz: d87c17b6b710350c5d888baeb3c7b1f32cca12e25fbd5b27df534748466eb3ab4acc7a71ab3f19d064c06b3ebb4a6f9ac75ae4a4678f144697ff72350d4ec134
6
+ metadata.gz: 7d6fe658a5dac93dd573a5a58b77f7bf843dd0bb7640dd3f6ef24c86fd225c9175d8332e24f0fd2a45c1b9dc2ea8ea22cfd11a2f450e60c936f3ce2ec0083c11
7
+ data.tar.gz: c9235b923da1c65581b127a636d1712854f76f6b5a8dc8567588f2261a3cb094bae244c93e2ac748f3d8d6f8c27867b3a5eeeea9705ff24fa5c0d7580f258739
data/lib/rubyflake.rb CHANGED
@@ -4,7 +4,7 @@ class Rubyflake
4
4
 
5
5
  FLAKE_TIMESTAMP_LENGTH = 41
6
6
 
7
- FLAKE_RANDOM_LENGTH = 0b1111111111111111111111111
7
+ FLAKE_RANDOM_MAX = 0b1111111111111111111111111
8
8
  FLAKE_TIMESTAMP_SHIFT = 23
9
9
 
10
10
  def initialize(epoch = EPOCH)
@@ -16,7 +16,7 @@ class Rubyflake
16
16
  milliseconds = ((Time.now().to_f - @epoch) * 1000).to_i
17
17
 
18
18
  # Generate 23 random bits.
19
- random_bits = Random.new.rand(0..Rubyflake::FLAKE_RANDOM_LENGTH)
19
+ random_bits = Random.new.rand(0..Rubyflake::FLAKE_RANDOM_MAX)
20
20
 
21
21
  # Shift our timestamp over 23 bits to make room for the random bits,
22
22
  # and then add the two together.
@@ -24,10 +24,20 @@ class Rubyflake
24
24
 
25
25
  end
26
26
 
27
+ # Extract the time from an ID.
28
+ #
29
+ def time(id)
30
+ Time.at(((id >> Rubyflake::FLAKE_TIMESTAMP_SHIFT) + @epoch) / 1000)
31
+ end
32
+
27
33
  class << self
28
34
  def generate(epoch = Rubyflake::EPOCH)
29
35
  Rubyflake.new(epoch).generate()
30
36
  end
37
+
38
+ def time(id, epoch = Rubyflake::EPOCH)
39
+ Rubyflake.new(epoch).time(id)
40
+ end
31
41
  end
32
42
 
33
- end
43
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyflake
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
  - Matt Hogan
@@ -29,17 +29,17 @@ require_paths:
29
29
  - lib
30
30
  required_ruby_version: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - '>='
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  required_rubygems_version: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
37
+ - - '>='
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0'
40
40
  requirements: []
41
41
  rubyforge_project:
42
- rubygems_version: 2.2.2
42
+ rubygems_version: 2.2.1
43
43
  signing_key:
44
44
  specification_version: 4
45
45
  summary: Simple, distributed 64-bit unique ID generation.