lexical_uuid 0.1.2 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/Rakefile +1 -1
  2. data/lexical_uuid.gemspec +22 -29
  3. data/lib/lexical_uuid.rb +6 -33
  4. metadata +11 -15
  5. data/.gitignore +0 -21
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ begin
11
11
  gem.homepage = "http://github.com/jamesgolick/lexical_uuid"
12
12
  gem.authors = ["James Golick"]
13
13
  gem.add_development_dependency "rspec", ">= 1.2.9"
14
- gem.add_dependency "RubyInline", "=3.8.4"
14
+ gem.add_dependency "fnv"
15
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
16
  end
17
17
  Jeweler::GemcutterTasks.new
data/lexical_uuid.gemspec CHANGED
@@ -1,58 +1,51 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{lexical_uuid}
8
- s.version = "0.1.2"
7
+ s.name = "lexical_uuid"
8
+ s.version = "0.1.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["James Golick"]
12
- s.date = %q{2010-10-04}
13
- s.description = %q{UUIDs that are byte-ordered lamport clocks (timestamp, worker_id). Much simpler than type-1 UUID's crappy, weirdo layout.}
14
- s.email = %q{jamesgolick@gmail.com}
12
+ s.date = "2011-09-23"
13
+ s.description = "UUIDs that are byte-ordered lamport clocks (timestamp, worker_id). Much simpler than type-1 UUID's crappy, weirdo layout."
14
+ s.email = "jamesgolick@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc"
17
+ "README.rdoc"
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "lexical_uuid.gemspec",
27
- "lib/lexical_uuid.rb",
28
- "spec/lexical_uuid_spec.rb",
29
- "spec/spec.opts",
30
- "spec/spec_helper.rb"
31
- ]
32
- s.homepage = %q{http://github.com/jamesgolick/lexical_uuid}
33
- s.rdoc_options = ["--charset=UTF-8"]
34
- s.require_paths = ["lib"]
35
- s.rubygems_version = %q{1.3.7}
36
- s.summary = %q{UUIDs that are byte-ordered lamport clocks (timestamp, worker_id). Much simpler than type-1 UUID's crappy, weirdo layout.}
37
- s.test_files = [
21
+ "LICENSE",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "lexical_uuid.gemspec",
26
+ "lib/lexical_uuid.rb",
38
27
  "spec/lexical_uuid_spec.rb",
39
- "spec/spec_helper.rb"
28
+ "spec/spec.opts",
29
+ "spec/spec_helper.rb"
40
30
  ]
31
+ s.homepage = "http://github.com/jamesgolick/lexical_uuid"
32
+ s.require_paths = ["lib"]
33
+ s.rubygems_version = "1.8.10"
34
+ s.summary = "UUIDs that are byte-ordered lamport clocks (timestamp, worker_id). Much simpler than type-1 UUID's crappy, weirdo layout."
41
35
 
42
36
  if s.respond_to? :specification_version then
43
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
44
37
  s.specification_version = 3
45
38
 
46
39
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
40
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
48
- s.add_runtime_dependency(%q<RubyInline>, ["= 3.8.4"])
41
+ s.add_runtime_dependency(%q<RubyInline>, ["> 3.8.4"])
49
42
  else
50
43
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
51
- s.add_dependency(%q<RubyInline>, ["= 3.8.4"])
44
+ s.add_dependency(%q<RubyInline>, ["> 3.8.4"])
52
45
  end
53
46
  else
54
47
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
55
- s.add_dependency(%q<RubyInline>, ["= 3.8.4"])
48
+ s.add_dependency(%q<RubyInline>, ["> 3.8.4"])
56
49
  end
57
50
  end
58
51
 
data/lib/lexical_uuid.rb CHANGED
@@ -1,35 +1,8 @@
1
1
  require "rubygems"
2
2
  require "socket"
3
- require "inline"
4
-
5
- class String
6
- inline :C do |builder|
7
- builder.c <<-__END__
8
- static long fnv1a() {
9
- long hash = 0xcbf29ce484222325;
10
- long i = 0;
11
-
12
- for(i = 0; i < RSTRING_LEN(self); i++) {
13
- hash ^= RSTRING_PTR(self)[i];
14
- hash *= 0x100000001b3;
15
- }
16
-
17
- return hash;
18
- }
19
- __END__
20
- end
21
- end
22
-
23
- # Borrowed from the SimpleUUID gem
24
- class Time
25
- def self.stamp
26
- Time.now.stamp
27
- end
28
-
29
- def stamp
30
- to_i * 1_000_000 + usec
31
- end
32
- end
3
+ require "fnv"
4
+ require File.join(File.dirname(__FILE__), "time_ext")
5
+ require File.join(File.dirname(__FILE__), "increasing_microsecond_clock")
33
6
 
34
7
  class LexicalUUID
35
8
  class << self
@@ -41,13 +14,13 @@ class LexicalUUID
41
14
  def create_worker_id
42
15
  fqdn = Socket.gethostbyname(Socket.gethostname).first
43
16
  pid = Process.pid
44
- "#{fqdn}-#{pid}".fnv1a
17
+ FNV.new.fnv1a_64("#{fqdn}-#{pid}")
45
18
  end
46
19
  end
47
20
 
48
21
  attr_reader :worker_id, :timestamp
49
22
 
50
- def initialize(timestamp = nil, worker_id = nil)
23
+ def initialize(timestamp = nil, worker_id = nil, timestamp_factory = IncreasingMicrosecondClock)
51
24
  case timestamp
52
25
  when Fixnum, Bignum
53
26
  @timestamp = timestamp
@@ -68,7 +41,7 @@ class LexicalUUID
68
41
  @worker_id = self.class.worker_id
69
42
  when nil
70
43
  @worker_id = self.class.worker_id
71
- @timestamp = Time.stamp
44
+ @timestamp = timestamp_factory.call
72
45
  end
73
46
  end
74
47
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lexical_uuid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
5
- prerelease: false
4
+ hash: 23
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 6
10
+ version: 0.1.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - James Golick
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-04 00:00:00 -07:00
19
- default_executable:
18
+ date: 2011-09-23 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: rspec
@@ -40,7 +39,7 @@ dependencies:
40
39
  requirement: &id002 !ruby/object:Gem::Requirement
41
40
  none: false
42
41
  requirements:
43
- - - "="
42
+ - - ">"
44
43
  - !ruby/object:Gem::Version
45
44
  hash: 47
46
45
  segments:
@@ -61,7 +60,6 @@ extra_rdoc_files:
61
60
  - README.rdoc
62
61
  files:
63
62
  - .document
64
- - .gitignore
65
63
  - LICENSE
66
64
  - README.rdoc
67
65
  - Rakefile
@@ -71,13 +69,12 @@ files:
71
69
  - spec/lexical_uuid_spec.rb
72
70
  - spec/spec.opts
73
71
  - spec/spec_helper.rb
74
- has_rdoc: true
75
72
  homepage: http://github.com/jamesgolick/lexical_uuid
76
73
  licenses: []
77
74
 
78
75
  post_install_message:
79
- rdoc_options:
80
- - --charset=UTF-8
76
+ rdoc_options: []
77
+
81
78
  require_paths:
82
79
  - lib
83
80
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -101,10 +98,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
98
  requirements: []
102
99
 
103
100
  rubyforge_project:
104
- rubygems_version: 1.3.7
101
+ rubygems_version: 1.8.10
105
102
  signing_key:
106
103
  specification_version: 3
107
104
  summary: UUIDs that are byte-ordered lamport clocks (timestamp, worker_id). Much simpler than type-1 UUID's crappy, weirdo layout.
108
- test_files:
109
- - spec/lexical_uuid_spec.rb
110
- - spec/spec_helper.rb
105
+ test_files: []
106
+
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC