noid 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/doc/active_record_sample.rb +6 -0
- data/lib/noid.rb +2 -0
- data/lib/noid/active_record.rb +5 -0
- data/lib/noid/active_record/provider.rb +36 -0
- data/lib/noid/base.rb +3 -1
- data/lib/noid/persistence/json.rb +12 -4
- data/noid.gemspec +5 -2
- metadata +8 -5
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/noid.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
module Noid::ActiveRecord
|
2
|
+
module Provider
|
3
|
+
def self.included base
|
4
|
+
base.send :before_create, :mint_identifier
|
5
|
+
# base.send :attr_accessor, :minter
|
6
|
+
class << base
|
7
|
+
def minter value = nil
|
8
|
+
@minter = value if value
|
9
|
+
@minter
|
10
|
+
end
|
11
|
+
|
12
|
+
def identifier_field value = nil
|
13
|
+
@identifier_field = value if value
|
14
|
+
@identifier_field
|
15
|
+
end
|
16
|
+
|
17
|
+
def persistence_path
|
18
|
+
File.join RAILS_ROOT, "db/#{self.to_s}_NOID.js"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def minter= value
|
24
|
+
@minter = value
|
25
|
+
end
|
26
|
+
|
27
|
+
def minter
|
28
|
+
@minter || self.class.minter
|
29
|
+
end
|
30
|
+
|
31
|
+
def mint_identifier
|
32
|
+
self.send "#{self.class.instance_variable_get('@identifier_field')}=", self.minter.mint unless self.attribute_present? self.class.instance_variable_get('@identifier_field')
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
data/lib/noid/base.rb
CHANGED
@@ -9,6 +9,7 @@ module Noid
|
|
9
9
|
@max = nil
|
10
10
|
@min = nil
|
11
11
|
@config = { :identifier => {} }.merge args
|
12
|
+
super() if respond_to?('super')
|
12
13
|
setup_mask args
|
13
14
|
end
|
14
15
|
|
@@ -117,7 +118,8 @@ module Noid
|
|
117
118
|
end
|
118
119
|
|
119
120
|
def setup_mask args
|
120
|
-
@
|
121
|
+
@template = args[:template]
|
122
|
+
@prefix, @mask = @template.split('.')
|
121
123
|
|
122
124
|
@prefix = "#{args[:namespace]}/#{@prefix}" if args[:namespace]
|
123
125
|
|
@@ -4,14 +4,16 @@ module Noid::Persistence
|
|
4
4
|
FILENAME = 'NOID.js'
|
5
5
|
def initialize args = {}
|
6
6
|
@file = args[:filename] || FILENAME
|
7
|
-
|
7
|
+
@json = args[:json] || File.read(@file) rescue nil
|
8
|
+
data = load_json if @json
|
9
|
+
data ||= {}
|
8
10
|
super data.merge(args)
|
9
11
|
save
|
10
12
|
end
|
11
13
|
|
12
14
|
protected
|
13
15
|
def load_json
|
14
|
-
data = ::JSON.parse(
|
16
|
+
data = ::JSON.parse(@json) rescue nil
|
15
17
|
data ||= {}
|
16
18
|
data = data.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} unless data.empty?
|
17
19
|
data[:counters] = data[:counters].map { |x| x.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} } if data[:counters]
|
@@ -20,10 +22,16 @@ module Noid::Persistence
|
|
20
22
|
end
|
21
23
|
|
22
24
|
def save
|
25
|
+
str = self.to_json
|
23
26
|
File.open(@file, 'w') do |f|
|
24
|
-
str = { :identifier => { :class => identifier }, :s => @s, :counters => @counters, :seed => @seed, }.to_json
|
25
27
|
f.write(str)
|
26
|
-
end
|
28
|
+
end unless @file == '/dev/null'
|
29
|
+
|
30
|
+
str
|
31
|
+
end
|
32
|
+
|
33
|
+
def to_json
|
34
|
+
str = { :template => @template, :identifier => { :class => identifier.name }, :s => @s, :counters => @counters, :seed => @seed }.to_json
|
27
35
|
end
|
28
36
|
|
29
37
|
end
|
data/noid.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{noid}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Chris Beer"]
|
12
|
-
s.date = %q{2010-12-
|
12
|
+
s.date = %q{2010-12-23}
|
13
13
|
s.description = %q{}
|
14
14
|
s.email = %q{chris@cbeer.info}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -23,7 +23,10 @@ Gem::Specification.new do |s|
|
|
23
23
|
"README.rdoc",
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
|
+
"doc/active_record_sample.rb",
|
26
27
|
"lib/noid.rb",
|
28
|
+
"lib/noid/active_record.rb",
|
29
|
+
"lib/noid/active_record/provider.rb",
|
27
30
|
"lib/noid/base.rb",
|
28
31
|
"lib/noid/identifier.rb",
|
29
32
|
"lib/noid/identifier/anvl.rb",
|
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:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 4
|
9
|
+
- 0
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Beer
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-12-
|
18
|
+
date: 2010-12-23 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -136,7 +136,10 @@ files:
|
|
136
136
|
- README.rdoc
|
137
137
|
- Rakefile
|
138
138
|
- VERSION
|
139
|
+
- doc/active_record_sample.rb
|
139
140
|
- lib/noid.rb
|
141
|
+
- lib/noid/active_record.rb
|
142
|
+
- lib/noid/active_record/provider.rb
|
140
143
|
- lib/noid/base.rb
|
141
144
|
- lib/noid/identifier.rb
|
142
145
|
- lib/noid/identifier/anvl.rb
|