serialnumber 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ syntax: glob
2
+
3
+ pkg/*
data/.hgtags ADDED
@@ -0,0 +1 @@
1
+ 33d6d79422bb8af611ceec6b4c3395c321b9206c 0.0.5
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+ source "http://gems.omc.net"
3
+
4
+ gemspec
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ serialnumber (0.0.9)
5
+ version
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ remote: http://gems.omc.net/
10
+ specs:
11
+ ZenTest (4.5.0)
12
+ autotest (4.4.6)
13
+ ZenTest (>= 4.4.1)
14
+ autotest-notification (2.3.1)
15
+ autotest (~> 4.3)
16
+ diff-lcs (1.1.2)
17
+ rspec (2.6.0)
18
+ rspec-core (~> 2.6.0)
19
+ rspec-expectations (~> 2.6.0)
20
+ rspec-mocks (~> 2.6.0)
21
+ rspec-core (2.6.4)
22
+ rspec-expectations (2.6.0)
23
+ diff-lcs (~> 1.1.2)
24
+ rspec-mocks (2.6.0)
25
+ version (1.0.0)
26
+
27
+ PLATFORMS
28
+ ruby
29
+
30
+ DEPENDENCIES
31
+ ZenTest
32
+ autotest
33
+ autotest-notification
34
+ rspec
35
+ serialnumber!
data/README ADDED
@@ -0,0 +1,7 @@
1
+ <!-- -*- markdown -*- -->
2
+
3
+ Description
4
+ =============
5
+
6
+ Implementation of a serialnumber arithmetic as described in [rfc1982](http://www.faqs.org/rfcs/rfc1982.html)
7
+
@@ -0,0 +1,69 @@
1
+ # Author: David Krentzlin <david.krentzlin@lisp-unleashed.de>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the "Software"),
5
+ # to deal in the Software without restriction, including without limitation
6
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ # and/or sell copies of the Software, and to permit persons to whom the
8
+ # Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included
11
+ # in all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
17
+ # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
19
+ # OTHER DEALINGS IN THE SOFTWARE.
20
+
21
+ require 'bundler'
22
+ require 'rspec/core/rake_task'
23
+
24
+ require 'rake/version_task'
25
+ require 'version'
26
+
27
+ Bundler::GemHelper.install_tasks :name => "serialnumber"
28
+
29
+ namespace :spec do
30
+ RSpec::Core::RakeTask.new(:all) do |t|
31
+ t.pattern = "spec/**/*_spec.rb"
32
+ end
33
+ end
34
+
35
+
36
+ task :spec => ['spec:all']
37
+
38
+
39
+ spec = Gem::Specification.new do |s|
40
+ s.name = "serialnumber"
41
+ s.version = "0.0.1"
42
+ s.platform = Gem::Platform::RUBY
43
+ s.authors = ["David Krentzlin"]
44
+ s.email = ["david.krentzlin@lisp-unleashed.de"]
45
+ s.homepage = ""
46
+ s.summary = %q{Implementation of a rfc1982 serial}
47
+ s.description = %q{Serialarithmetic as described in rfc1982}
48
+
49
+ s.rubyforge_project = ""
50
+
51
+ s.files = `hg locate`.split("\n")
52
+ s.test_files = `hg locate -I {spec,features}/*`.split("\n")
53
+ s.executables = `hg locate -I bin/*`.split("\n").map{ |f| File.basename(f) }
54
+ s.require_paths = ["lib"]
55
+
56
+
57
+ %w(rspec ZenTest autotest autotest-notification).each do |gem|
58
+ s.add_development_dependency gem
59
+ end
60
+
61
+
62
+ %w(version).each do |gem|
63
+ s.add_dependency gem
64
+ end
65
+ end
66
+
67
+ Rake::VersionTask.new do |task|
68
+ task.with_gemspec = spec
69
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.9
@@ -0,0 +1,21 @@
1
+ # Author: David Krentzlin <david.krentzlin@lisp-unleashed.de>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the "Software"),
5
+ # to deal in the Software without restriction, including without limitation
6
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ # and/or sell copies of the Software, and to permit persons to whom the
8
+ # Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included
11
+ # in all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
17
+ # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
19
+ # OTHER DEALINGS IN THE SOFTWARE.
20
+
21
+ Autotest.add_discovery { "rspec2" }
@@ -0,0 +1,29 @@
1
+ # Author: David Krentzlin <david.krentzlin@lisp-unleashed.de>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the "Software"),
5
+ # to deal in the Software without restriction, including without limitation
6
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ # and/or sell copies of the Software, and to permit persons to whom the
8
+ # Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included
11
+ # in all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
17
+ # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
19
+ # OTHER DEALINGS IN THE SOFTWARE.
20
+
21
+ require 'rubygems'
22
+ require 'version'
23
+
24
+
25
+ required_files = %w( rfc1982 )
26
+
27
+ required_files.each do |file|
28
+ require File.dirname(__FILE__) + "/serialnumber/#{file}"
29
+ end
@@ -0,0 +1,98 @@
1
+ # Author: David Krentzlin <david.krentzlin@lisp-unleashed.de>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the "Software"),
5
+ # to deal in the Software without restriction, including without limitation
6
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ # and/or sell copies of the Software, and to permit persons to whom the
8
+ # Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included
11
+ # in all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
17
+ # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
19
+ # OTHER DEALINGS IN THE SOFTWARE.
20
+
21
+
22
+
23
+ module Serial
24
+ class OutOfBound < RuntimeError; end
25
+ class Invalid < RuntimeError; end
26
+
27
+ class RFC1982
28
+ include Comparable
29
+ attr_reader :serial_bits,:value
30
+
31
+ def initialize(number,serial_bits = 32)
32
+ raise OutOfBound,"The number of serial_bits must be >= 2" unless serial_bits >= 2
33
+ @serial_bits = serial_bits
34
+ ensure_valid!(number)
35
+ @value = number
36
+ end
37
+
38
+ def ensure_valid!(number)
39
+ raise Invalid,"Serial must be a fixnum" unless %w(Fixnum Bignum).include?(number.class.name)
40
+ raise OutOfBound,"Negative numbers are not allowd" if number < 0
41
+ if bits_needed_for(number) > serial_bits
42
+ raise OutOfBound,"Given number #{number} can not be represented with #{serial_bits} serial_bits"
43
+ end
44
+ end
45
+
46
+ def +(number)
47
+ if summand_out_of_bound?(number)
48
+ raise OutOfBound,"The summand #{number} is out of bound"
49
+ end
50
+ sum = (value + number) % (2 ** serial_bits)
51
+ Serial::RFC1982.new(sum,serial_bits)
52
+ end
53
+
54
+ def <=>(other)
55
+ unless other.respond_to?(:value)
56
+ raise Invalid,"Expected #{other} to respond_to :value"
57
+ end
58
+ return 0 if equal?(value,other.value)
59
+ return -1 if less?(value,other.value)
60
+ return 1 if greater?(value,other.value)
61
+ end
62
+
63
+ protected
64
+ def boundary
65
+ @boundary ||= (2 ** (serial_bits - 1))
66
+ end
67
+
68
+ def bits_needed_for(number)
69
+ log2(number).floor + 1
70
+ end
71
+
72
+ def log2(number)
73
+ Math.log(number) / Math.log(2)
74
+ end
75
+
76
+ def summand_out_of_bound?(number)
77
+ number < 0 || number > biggest_acceptable_summand
78
+ end
79
+
80
+ def biggest_acceptable_summand
81
+ boundary - 1
82
+ end
83
+
84
+ def less?(lhs,rhs)
85
+ (lhs < rhs && ((rhs - lhs) < boundary)) ||
86
+ (lhs > rhs && ((lhs - rhs) > boundary))
87
+ end
88
+
89
+ def greater?(lhs,rhs)
90
+ (lhs < rhs && ((rhs - lhs) > boundary)) ||
91
+ (lhs > rhs && ((lhs - rhs) < boundary))
92
+ end
93
+
94
+ def equal?(lhs,rhs)
95
+ lhs == rhs
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,44 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{serialnumber}
5
+ s.version = "0.0.9"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["David Krentzlin"]
9
+ s.date = %q{2011-07-13}
10
+ s.description = %q{Serialarithmetic as described in rfc1982}
11
+ s.email = ["david.krentzlin@lisp-unleashed.de"]
12
+ s.files = [".hgignore", ".hgtags", "Gemfile", "Gemfile.lock", "README", "Rakefile", "VERSION", "autotest/discover.rb", "lib/serialnumber.rb", "lib/serialnumber/rfc1982.rb", "serialnumber.gemspec", "spec/serial_spec.rb", "spec/spec_helper.rb"]
13
+ s.homepage = %q{}
14
+ s.require_paths = ["lib"]
15
+ s.rubyforge_project = %q{}
16
+ s.rubygems_version = %q{1.3.7}
17
+ s.summary = %q{Implementation of a rfc1982 serial}
18
+ s.test_files = ["spec/serial_spec.rb", "spec/spec_helper.rb"]
19
+
20
+ if s.respond_to? :specification_version then
21
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
22
+ s.specification_version = 3
23
+
24
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
25
+ s.add_development_dependency(%q<rspec>, [">= 0"])
26
+ s.add_development_dependency(%q<ZenTest>, [">= 0"])
27
+ s.add_development_dependency(%q<autotest>, [">= 0"])
28
+ s.add_development_dependency(%q<autotest-notification>, [">= 0"])
29
+ s.add_runtime_dependency(%q<version>, [">= 0"])
30
+ else
31
+ s.add_dependency(%q<rspec>, [">= 0"])
32
+ s.add_dependency(%q<ZenTest>, [">= 0"])
33
+ s.add_dependency(%q<autotest>, [">= 0"])
34
+ s.add_dependency(%q<autotest-notification>, [">= 0"])
35
+ s.add_dependency(%q<version>, [">= 0"])
36
+ end
37
+ else
38
+ s.add_dependency(%q<rspec>, [">= 0"])
39
+ s.add_dependency(%q<ZenTest>, [">= 0"])
40
+ s.add_dependency(%q<autotest>, [">= 0"])
41
+ s.add_dependency(%q<autotest-notification>, [">= 0"])
42
+ s.add_dependency(%q<version>, [">= 0"])
43
+ end
44
+ end
@@ -0,0 +1,94 @@
1
+ # Author: David Krentzlin <david.krentzlin@lisp-unleashed.de>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the "Software"),
5
+ # to deal in the Software without restriction, including without limitation
6
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ # and/or sell copies of the Software, and to permit persons to whom the
8
+ # Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included
11
+ # in all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
17
+ # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
19
+ # OTHER DEALINGS IN THE SOFTWARE.
20
+
21
+
22
+ require 'serial/rfc1982'
23
+
24
+ describe Serial::RFC1982 do
25
+
26
+ context "Input validation" do
27
+ it "does not allow negative integers" do
28
+ expect{
29
+ Serial::RFC1982.new(-1)
30
+ }.to raise_error(Serial::OutOfBound)
31
+ end
32
+
33
+ it "does not allow numbers other than fixnums" do
34
+ expect{
35
+ Serial::RFC1982.new(1.2)
36
+ }.to raise_error(Serial::Invalid)
37
+ end
38
+
39
+ it "does not allow numbers that exceed serial-bits" do
40
+ expect{
41
+ Serial::RFC1982.new(100000,2)
42
+ }.to raise_error(Serial::OutOfBound)
43
+ end
44
+ end
45
+
46
+ context "Core Operations" do
47
+ context "Addition" do
48
+ it "doesn't accept invalid summand" do
49
+ sn = Serial::RFC1982.new(1,2)
50
+ expect{
51
+ sn + 100000
52
+ }.to raise_error(Serial::OutOfBound)
53
+ end
54
+
55
+ it "adds a value and returns a new serial" do
56
+ sn = Serial::RFC1982.new(1)
57
+ sn2 = sn + 1
58
+ sn2.value.should == 2
59
+ end
60
+
61
+ context "corollary 1" do
62
+ let(:sn){ Serial::RFC1982.new(100) }
63
+ it "ensures (s + n) == s if n == 0" do
64
+ (sn + 0).should == sn
65
+ end
66
+
67
+ it "ensures (s + n) > s" do
68
+ (sn + 10).should > sn
69
+ end
70
+ end
71
+ end
72
+
73
+ context "Comparison" do
74
+ let(:s100){ Serial::RFC1982.new(100) }
75
+ let(:s101){ Serial::RFC1982.new(101) }
76
+ let(:s100_2){ Serial::RFC1982.new(100) }
77
+
78
+ it "can be compared using ==" do
79
+ s100.should == s100_2
80
+ end
81
+ it "can be compared using !=" do
82
+ s100.should_not == s101
83
+ end
84
+
85
+ it "can be compared using <" do
86
+ s100.should < s101
87
+ end
88
+
89
+ it "can be compared using >" do
90
+ s101.should > s100
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,24 @@
1
+ # Author: David Krentzlin <david.krentzlin@lisp-unleashed.de>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a
4
+ # copy of this software and associated documentation files (the "Software"),
5
+ # to deal in the Software without restriction, including without limitation
6
+ # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7
+ # and/or sell copies of the Software, and to permit persons to whom the
8
+ # Software is furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included
11
+ # in all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
17
+ # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
19
+ # OTHER DEALINGS IN THE SOFTWARE.
20
+
21
+ require 'rspec'
22
+
23
+ $LOAD_PATH << File.expand_path('../lib',__FILE__)
24
+ $LOAD_PATH << File.dirname(__FILE__)
metadata ADDED
@@ -0,0 +1,150 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: serialnumber
3
+ version: !ruby/object:Gem::Version
4
+ hash: 13
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 9
10
+ version: 0.0.9
11
+ platform: ruby
12
+ authors:
13
+ - David Krentzlin
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-07-13 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rspec
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: ZenTest
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: autotest
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: autotest-notification
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
75
+ type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: version
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ type: :runtime
90
+ version_requirements: *id005
91
+ description: Serialarithmetic as described in rfc1982
92
+ email:
93
+ - david.krentzlin@lisp-unleashed.de
94
+ executables: []
95
+
96
+ extensions: []
97
+
98
+ extra_rdoc_files: []
99
+
100
+ files:
101
+ - .hgignore
102
+ - .hgtags
103
+ - Gemfile
104
+ - Gemfile.lock
105
+ - README
106
+ - Rakefile
107
+ - VERSION
108
+ - autotest/discover.rb
109
+ - lib/serialnumber.rb
110
+ - lib/serialnumber/rfc1982.rb
111
+ - serialnumber.gemspec
112
+ - spec/serial_spec.rb
113
+ - spec/spec_helper.rb
114
+ has_rdoc: true
115
+ homepage: ""
116
+ licenses: []
117
+
118
+ post_install_message:
119
+ rdoc_options: []
120
+
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
131
+ version: "0"
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
141
+ requirements: []
142
+
143
+ rubyforge_project: ""
144
+ rubygems_version: 1.3.7
145
+ signing_key:
146
+ specification_version: 3
147
+ summary: Implementation of a rfc1982 serial
148
+ test_files:
149
+ - spec/serial_spec.rb
150
+ - spec/spec_helper.rb