noid 0.0.1 → 0.0.2

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 (5) hide show
  1. data/VERSION +1 -1
  2. data/lib/noid/minter.rb +16 -10
  3. data/noid.gemspec +64 -0
  4. data/test/test_noid.rb +25 -0
  5. metadata +4 -3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/lib/noid/minter.rb CHANGED
@@ -9,6 +9,9 @@ module Noid
9
9
  @min = nil
10
10
 
11
11
  @prefix, @mask = args[:template].split('.')
12
+
13
+ @prefix = "#{args[:namespace]}/#{@prefix}" if args[:namespace]
14
+
12
15
  @type, @characters = @mask.split '', 2
13
16
  @characters = @characters.split ''
14
17
  @check = @characters.pop and true if @characters.last == 'k'
@@ -55,21 +58,24 @@ module Noid
55
58
  str
56
59
  end
57
60
 
58
- def hold id
59
-
60
- end
61
-
62
- def release id
61
+ def valid? id
62
+ prefix = id[0..@prefix.length-1]
63
+ ch = id[@prefix.length..-1].split('')
64
+ check = ch.pop if @check
65
+ return false unless prefix == @prefix
63
66
 
64
- end
67
+ return false unless @characters.length == ch.length
68
+ @characters.each_with_index do |c, i|
69
+ return false unless XDIGIT.include? ch[i]
70
+ return false if c == 'd' and ch[i] =~ /[^\d]/
71
+ end
65
72
 
66
- def validate id
73
+ return false unless check.nil? or check == checkdigit(id[0..-2])
67
74
 
75
+ true
68
76
  end
69
77
 
70
-
71
- private
72
-
78
+ protected
73
79
  def s
74
80
  @s
75
81
  end
data/noid.gemspec ADDED
@@ -0,0 +1,64 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{noid}
8
+ s.version = "0.0.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Chris Beer"]
12
+ s.date = %q{2010-12-12}
13
+ s.description = %q{}
14
+ s.email = %q{chris@cbeer.info}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ "Gemfile",
22
+ "LICENSE.txt",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "lib/noid.rb",
27
+ "lib/noid/minter.rb",
28
+ "noid.gemspec",
29
+ "test/helper.rb",
30
+ "test/test_noid.rb"
31
+ ]
32
+ s.homepage = %q{http://github.com/cbeer/noid}
33
+ s.licenses = ["MIT"]
34
+ s.require_paths = ["lib"]
35
+ s.rubygems_version = %q{1.3.7}
36
+ s.summary = %q{Nice Opaque Identifier}
37
+ s.test_files = [
38
+ "test/helper.rb",
39
+ "test/test_noid.rb"
40
+ ]
41
+
42
+ if s.respond_to? :specification_version then
43
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
44
+ s.specification_version = 3
45
+
46
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
48
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
49
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
50
+ s.add_development_dependency(%q<rcov>, [">= 0"])
51
+ else
52
+ s.add_dependency(%q<shoulda>, [">= 0"])
53
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
54
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
55
+ s.add_dependency(%q<rcov>, [">= 0"])
56
+ end
57
+ else
58
+ s.add_dependency(%q<shoulda>, [">= 0"])
59
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
60
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
61
+ s.add_dependency(%q<rcov>, [">= 0"])
62
+ end
63
+ end
64
+
data/test/test_noid.rb CHANGED
@@ -105,5 +105,30 @@ class TestNoid < Test::Unit::TestCase
105
105
  }
106
106
  assert_equal('z38fs', n.mint)
107
107
  end
108
+
109
+ should "validate 'r' digit sequences" do
110
+ n = Noid::Minter.new :template => 'r.rd'
111
+
112
+ assert_equal(true, n.valid?('r1') )
113
+ assert_equal(true, n.valid?('r9') )
114
+ assert_equal(false, n.valid?('r11') )
115
+ assert_equal(false, n.valid?('ro'))
116
+ assert_equal(false, n.valid?('rb'))
117
+ end
118
+
119
+ should "validate 'r' xdigit sequences" do
120
+ n = Noid::Minter.new :template => 'r.re'
121
+
122
+ assert_equal(true, n.valid?('r1') )
123
+ assert_equal(true, n.valid?('r9') )
124
+ assert_equal(false, n.valid?('ro'))
125
+ assert_equal(true, n.valid?('rb'))
126
+ end
127
+ should "validate 'r' xdigit + checkdigit sequences" do
128
+ n = Noid::Minter.new :template => 'r.rek'
129
+
130
+ assert_equal(true, n.valid?('r2w') )
131
+ assert_equal(false, n.valid?('r2b') )
132
+ end
108
133
  end
109
134
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: noid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Chris Beer
@@ -96,6 +96,7 @@ files:
96
96
  - VERSION
97
97
  - lib/noid.rb
98
98
  - lib/noid/minter.rb
99
+ - noid.gemspec
99
100
  - test/helper.rb
100
101
  - test/test_noid.rb
101
102
  has_rdoc: true