11module Noid
22 class Minter
3- attr_reader :seed , :seq
3+ attr_reader :seed , :seq , :template
44 attr_writer :counters
55
6- def initialize options = { }
7-
6+ def initialize ( options = { } )
87 if options [ :state ]
98 seed ( options [ :seed ] )
109 @seq = options [ :seq ]
@@ -19,44 +18,34 @@ def initialize options = {}
1918 @after_mint = options [ :after_mint ]
2019 end
2120 @template ||= Noid ::Template . new ( @template_string )
22- end
21+ end
2322
2423 ##
2524 # Mint a new identifier
2625 def mint
2726 n = next_in_sequence
2827 id = template . mint ( n )
29- if @after_mint
30- @after_mint . call ( self , id )
31- end
28+ @after_mint . call ( self , id ) if @after_mint
3229 id
3330 end
3431
35- ##
36- # Noid identifier template
37- #
38- # @return Noid::Template
39- def template
40- @template
41- end
42-
4332 ##
4433 # Is the identifier valid under the template string and checksum?
4534 # @param [String] id
4635 # @return bool
47- def valid? id
48- prefix = @template . prefix . empty? ? '' : id [ 0 ..@template . prefix . length - 1 ]
36+ def valid? ( id )
37+ prefix = @template . prefix . empty? ? '' : id [ 0 ..@template . prefix . length - 1 ]
4938 ch = @template . prefix . empty? ? id . split ( '' ) : id [ @template . prefix . length ..-1 ] . split ( '' )
5039 check = ch . pop if @template . checkdigit?
5140 return false unless prefix == @template . prefix
5241
5342 return false unless @template . characters . length == ch . length
5443 @template . characters . split ( '' ) . each_with_index do |c , i |
55- return false unless Noid ::XDIGIT . include? ch [ i ]
56- return false if c == 'd' and ch [ i ] =~ /[^\d ]/
44+ return false unless Noid ::XDIGIT . include? ch [ i ]
45+ return false if c == 'd' && ch [ i ] =~ /[^\d ]/
5746 end
5847
59- return false unless check . nil? or check == @template . checkdigit ( id [ 0 ..-2 ] )
48+ return false unless check . nil? || check == @template . checkdigit ( id [ 0 ..-2 ] )
6049
6150 true
6251 end
@@ -66,9 +55,9 @@ def valid? id
6655 # @param [Integer] seed
6756 # @param [Integer] seq
6857 # @return [Random]
69- def seed seed = nil , seq = 0
58+ def seed ( seed = nil , seq = 0 )
7059 @rand = ::Random . new ( seed ) if seed
71- @rand ||= ::Random . new
60+ @rand ||= ::Random . new
7261 @seed = @rand . seed
7362 @seq = seq || 0
7463
@@ -81,14 +70,14 @@ def next_in_sequence
8170 n = @seq
8271 @seq += 1
8372 case template . generator
84- when 'r'
85- n = next_random
73+ when 'r'
74+ n = next_random
8675 end
8776 n
8877 end
8978
9079 def next_random
91- raise Exception ( " Exhausted noid sequence pool" ) if counters . size == 0
80+ raise ' Exhausted noid sequence pool' if counters . size == 0
9281 i = @rand . rand ( counters . size )
9382 n = counters [ i ] [ :value ]
9483 counters [ i ] [ :value ] += 1
@@ -100,7 +89,7 @@ def next_random
10089 # Counters to use for quasi-random NOID sequences
10190 def counters
10291 return @counters if @counters
103- return [ ] unless template . generator == "r"
92+ return [ ] unless template . generator == 'r'
10493
10594 percounter = template . max / ( @max_counters || Noid ::MAX_COUNTERS ) + 1
10695 t = 0
@@ -120,7 +109,7 @@ def counters
120109 end
121110
122111 def dump
123- { : state => true , : seq => @seq , : seed => @seed , : template => template . template , : counters => Marshal . load ( Marshal . dump ( counters ) ) }
112+ { state : true , seq : @seq , seed : @seed , template : template . template , counters : Marshal . load ( Marshal . dump ( counters ) ) }
124113 end
125114 end
126115end
0 commit comments