dm-types 1.0.0 → 1.0.1
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.
- data/.gitignore +1 -0
- data/Gemfile +18 -19
- data/Rakefile +3 -3
- data/VERSION +1 -1
- data/dm-types.gemspec +16 -11
- data/lib/dm-types/enum.rb +2 -13
- data/lib/dm-types/flag.rb +2 -13
- data/lib/dm-types/json.rb +1 -1
- data/lib/dm-types/paranoid_boolean.rb +1 -1
- data/lib/dm-types/paranoid_datetime.rb +1 -1
- data/lib/dm-types/support/flags.rb +41 -0
- data/lib/dm-types/uri.rb +2 -3
- data/lib/dm-types/uuid.rb +4 -0
- data/spec/fixtures/article.rb +23 -25
- data/spec/fixtures/bookmark.rb +15 -17
- data/spec/fixtures/invention.rb +2 -4
- data/spec/fixtures/network_node.rb +34 -36
- data/spec/fixtures/person.rb +15 -18
- data/spec/fixtures/software_package.rb +23 -25
- data/spec/fixtures/ticket.rb +15 -17
- data/spec/fixtures/tshirt.rb +2 -4
- data/spec/integration/bcrypt_hash_spec.rb +4 -4
- data/spec/integration/comma_separated_list_spec.rb +2 -2
- data/spec/integration/enum_spec.rb +7 -7
- data/spec/integration/file_path_spec.rb +7 -7
- data/spec/integration/flag_spec.rb +3 -3
- data/spec/integration/ip_address_spec.rb +2 -2
- data/spec/integration/json_spec.rb +2 -2
- data/spec/integration/slug_spec.rb +5 -5
- data/spec/integration/uri_spec.rb +9 -9
- data/spec/integration/uuid_spec.rb +6 -6
- data/spec/integration/yaml_spec.rb +3 -3
- data/spec/shared/flags_shared_spec.rb +37 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/bcrypt_hash_spec.rb +2 -2
- data/spec/unit/csv_spec.rb +1 -1
- data/spec/unit/enum_spec.rb +4 -0
- data/spec/unit/epoch_time_spec.rb +1 -1
- data/spec/unit/file_path_spec.rb +1 -1
- data/spec/unit/flag_spec.rb +6 -2
- data/spec/unit/ip_address_spec.rb +1 -1
- data/spec/unit/json_spec.rb +2 -2
- data/spec/unit/regexp_spec.rb +1 -1
- data/spec/unit/uri_spec.rb +1 -1
- data/spec/unit/uuid_spec.rb +25 -0
- data/spec/unit/yaml_spec.rb +2 -2
- data/tasks/local_gemfile.rake +5 -7
- metadata +13 -19
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -71,14 +71,14 @@
|
|
71
71
|
source 'http://rubygems.org'
|
72
72
|
|
73
73
|
DATAMAPPER = 'git://github.com/datamapper'
|
74
|
-
DM_VERSION = '~> 1.0.
|
74
|
+
DM_VERSION = '~> 1.0.1'
|
75
75
|
|
76
76
|
group :runtime do # Runtime dependencies (as in the gemspec)
|
77
77
|
|
78
78
|
if ENV['EXTLIB']
|
79
|
-
gem 'extlib', '~> 0.9.15',
|
79
|
+
gem 'extlib', '~> 0.9.15', :git => "#{DATAMAPPER}/extlib.git"
|
80
80
|
else
|
81
|
-
gem 'activesupport', '~> 3.0.0
|
81
|
+
gem 'activesupport', '~> 3.0.0', :git => 'git://github.com/rails/rails.git', :branch => '3-0-stable', :require => nil
|
82
82
|
end
|
83
83
|
|
84
84
|
gem 'dm-core', DM_VERSION, :git => "#{DATAMAPPER}/dm-core.git"
|
@@ -94,7 +94,7 @@ group(:development) do # Development dependencies (as in the gemspec)
|
|
94
94
|
gem 'dm-validations', DM_VERSION, :git => "#{DATAMAPPER}/dm-validations.git"
|
95
95
|
|
96
96
|
gem 'rake', '~> 0.8.7'
|
97
|
-
gem 'rspec', '~> 1.3'
|
97
|
+
gem 'rspec', '~> 1.3', :git => 'git://github.com/snusnu/rspec', :branch => 'heckle_fix_plus_gemfile'
|
98
98
|
gem 'jeweler', '~> 1.4'
|
99
99
|
|
100
100
|
end
|
@@ -113,32 +113,31 @@ end
|
|
113
113
|
group :datamapper do # We need this because we want to pin these dependencies to their git master sources
|
114
114
|
|
115
115
|
adapters = ENV['ADAPTER'] || ENV['ADAPTERS']
|
116
|
-
adapters = adapters.to_s.
|
116
|
+
adapters = adapters.to_s.tr(',', ' ').split.uniq - %w[ in_memory ]
|
117
117
|
|
118
|
-
|
118
|
+
DO_VERSION = '~> 0.10.2'
|
119
|
+
DM_DO_ADAPTERS = %w[ sqlite postgres mysql oracle sqlserver ]
|
119
120
|
|
120
|
-
|
121
|
-
|
121
|
+
if (do_adapters = DM_DO_ADAPTERS & adapters).any?
|
122
|
+
options = {}
|
123
|
+
options[:git] = "#{DATAMAPPER}/do.git" if ENV['DO_GIT'] == 'true'
|
122
124
|
|
123
|
-
gem 'data_objects', DO_VERSION,
|
125
|
+
gem 'data_objects', DO_VERSION, options.dup
|
124
126
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
gem "do_#{adapter}", DO_VERSION, :git => "#{DATAMAPPER}/do.git"
|
129
|
-
end
|
127
|
+
do_adapters.each do |adapter|
|
128
|
+
adapter = 'sqlite3' if adapter == 'sqlite'
|
129
|
+
gem "do_#{adapter}", DO_VERSION, options.dup
|
130
130
|
end
|
131
131
|
|
132
132
|
gem 'dm-do-adapter', DM_VERSION, :git => "#{DATAMAPPER}/dm-do-adapter.git"
|
133
|
+
end
|
133
134
|
|
134
|
-
|
135
|
-
|
136
|
-
end
|
137
|
-
|
135
|
+
adapters.each do |adapter|
|
136
|
+
gem "dm-#{adapter}-adapter", DM_VERSION, :git => "#{DATAMAPPER}/dm-#{adapter}-adapter.git"
|
138
137
|
end
|
139
138
|
|
140
139
|
plugins = ENV['PLUGINS'] || ENV['PLUGIN']
|
141
|
-
plugins =
|
140
|
+
plugins = plugins.to_s.tr(',', ' ').split.push('dm-migrations').uniq
|
142
141
|
|
143
142
|
plugins.each do |plugin|
|
144
143
|
gem plugin, DM_VERSION, :git => "#{DATAMAPPER}/#{plugin}.git"
|
data/Rakefile
CHANGED
@@ -15,14 +15,14 @@ begin
|
|
15
15
|
|
16
16
|
gem.rubyforge_project = 'datamapper'
|
17
17
|
|
18
|
-
gem.add_dependency 'dm-core', '~> 1.0.
|
18
|
+
gem.add_dependency 'dm-core', '~> 1.0.1'
|
19
19
|
gem.add_dependency 'fastercsv', '~> 1.5.3'
|
20
|
-
gem.add_dependency 'json_pure', '~> 1.4
|
20
|
+
gem.add_dependency 'json_pure', '~> 1.4'
|
21
21
|
gem.add_dependency 'uuidtools', '~> 2.1.1'
|
22
22
|
gem.add_dependency 'stringex', '~> 1.1.0'
|
23
23
|
|
24
24
|
gem.add_development_dependency 'rspec', '~> 1.3'
|
25
|
-
gem.add_development_dependency 'dm-validations', '~> 1.0.
|
25
|
+
gem.add_development_dependency 'dm-validations', '~> 1.0.1'
|
26
26
|
end
|
27
27
|
|
28
28
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.1
|
data/dm-types.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{dm-types}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dan Kubb"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-09-07}
|
13
13
|
s.description = %q{DataMapper plugin providing extra data types}
|
14
14
|
s.email = %q{dan.kubb [a] gmail [d] com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -39,6 +39,7 @@ Gem::Specification.new do |s|
|
|
39
39
|
"lib/dm-types/paranoid_datetime.rb",
|
40
40
|
"lib/dm-types/regexp.rb",
|
41
41
|
"lib/dm-types/slug.rb",
|
42
|
+
"lib/dm-types/support/flags.rb",
|
42
43
|
"lib/dm-types/uri.rb",
|
43
44
|
"lib/dm-types/uuid.rb",
|
44
45
|
"lib/dm-types/yaml.rb",
|
@@ -62,6 +63,7 @@ Gem::Specification.new do |s|
|
|
62
63
|
"spec/integration/uuid_spec.rb",
|
63
64
|
"spec/integration/yaml_spec.rb",
|
64
65
|
"spec/rcov.opts",
|
66
|
+
"spec/shared/flags_shared_spec.rb",
|
65
67
|
"spec/shared/identity_function_group.rb",
|
66
68
|
"spec/spec.opts",
|
67
69
|
"spec/spec_helper.rb",
|
@@ -77,6 +79,7 @@ Gem::Specification.new do |s|
|
|
77
79
|
"spec/unit/paranoid_datetime_spec.rb",
|
78
80
|
"spec/unit/regexp_spec.rb",
|
79
81
|
"spec/unit/uri_spec.rb",
|
82
|
+
"spec/unit/uuid_spec.rb",
|
80
83
|
"spec/unit/yaml_spec.rb",
|
81
84
|
"tasks/ci.rake",
|
82
85
|
"tasks/local_gemfile.rake",
|
@@ -111,6 +114,7 @@ Gem::Specification.new do |s|
|
|
111
114
|
"spec/integration/uri_spec.rb",
|
112
115
|
"spec/integration/uuid_spec.rb",
|
113
116
|
"spec/integration/yaml_spec.rb",
|
117
|
+
"spec/shared/flags_shared_spec.rb",
|
114
118
|
"spec/shared/identity_function_group.rb",
|
115
119
|
"spec/spec_helper.rb",
|
116
120
|
"spec/unit/bcrypt_hash_spec.rb",
|
@@ -125,6 +129,7 @@ Gem::Specification.new do |s|
|
|
125
129
|
"spec/unit/paranoid_datetime_spec.rb",
|
126
130
|
"spec/unit/regexp_spec.rb",
|
127
131
|
"spec/unit/uri_spec.rb",
|
132
|
+
"spec/unit/uuid_spec.rb",
|
128
133
|
"spec/unit/yaml_spec.rb"
|
129
134
|
]
|
130
135
|
|
@@ -133,30 +138,30 @@ Gem::Specification.new do |s|
|
|
133
138
|
s.specification_version = 3
|
134
139
|
|
135
140
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
136
|
-
s.add_runtime_dependency(%q<dm-core>, ["~> 1.0.
|
141
|
+
s.add_runtime_dependency(%q<dm-core>, ["~> 1.0.1"])
|
137
142
|
s.add_runtime_dependency(%q<fastercsv>, ["~> 1.5.3"])
|
138
|
-
s.add_runtime_dependency(%q<json_pure>, ["~> 1.4
|
143
|
+
s.add_runtime_dependency(%q<json_pure>, ["~> 1.4"])
|
139
144
|
s.add_runtime_dependency(%q<uuidtools>, ["~> 2.1.1"])
|
140
145
|
s.add_runtime_dependency(%q<stringex>, ["~> 1.1.0"])
|
141
146
|
s.add_development_dependency(%q<rspec>, ["~> 1.3"])
|
142
|
-
s.add_development_dependency(%q<dm-validations>, ["~> 1.0.
|
147
|
+
s.add_development_dependency(%q<dm-validations>, ["~> 1.0.1"])
|
143
148
|
else
|
144
|
-
s.add_dependency(%q<dm-core>, ["~> 1.0.
|
149
|
+
s.add_dependency(%q<dm-core>, ["~> 1.0.1"])
|
145
150
|
s.add_dependency(%q<fastercsv>, ["~> 1.5.3"])
|
146
|
-
s.add_dependency(%q<json_pure>, ["~> 1.4
|
151
|
+
s.add_dependency(%q<json_pure>, ["~> 1.4"])
|
147
152
|
s.add_dependency(%q<uuidtools>, ["~> 2.1.1"])
|
148
153
|
s.add_dependency(%q<stringex>, ["~> 1.1.0"])
|
149
154
|
s.add_dependency(%q<rspec>, ["~> 1.3"])
|
150
|
-
s.add_dependency(%q<dm-validations>, ["~> 1.0.
|
155
|
+
s.add_dependency(%q<dm-validations>, ["~> 1.0.1"])
|
151
156
|
end
|
152
157
|
else
|
153
|
-
s.add_dependency(%q<dm-core>, ["~> 1.0.
|
158
|
+
s.add_dependency(%q<dm-core>, ["~> 1.0.1"])
|
154
159
|
s.add_dependency(%q<fastercsv>, ["~> 1.5.3"])
|
155
|
-
s.add_dependency(%q<json_pure>, ["~> 1.4
|
160
|
+
s.add_dependency(%q<json_pure>, ["~> 1.4"])
|
156
161
|
s.add_dependency(%q<uuidtools>, ["~> 2.1.1"])
|
157
162
|
s.add_dependency(%q<stringex>, ["~> 1.1.0"])
|
158
163
|
s.add_dependency(%q<rspec>, ["~> 1.3"])
|
159
|
-
s.add_dependency(%q<dm-validations>, ["~> 1.0.
|
164
|
+
s.add_dependency(%q<dm-validations>, ["~> 1.0.1"])
|
160
165
|
end
|
161
166
|
end
|
162
167
|
|
data/lib/dm-types/enum.rb
CHANGED
@@ -1,17 +1,10 @@
|
|
1
1
|
require 'dm-core'
|
2
|
+
require 'dm-types/support/flags'
|
2
3
|
|
3
4
|
module DataMapper
|
4
5
|
class Property
|
5
6
|
class Enum < Integer
|
6
|
-
|
7
|
-
|
8
|
-
attr_reader :flag_map
|
9
|
-
|
10
|
-
def self.[](*values)
|
11
|
-
klass = ::Class.new(self)
|
12
|
-
klass.flags(values)
|
13
|
-
klass
|
14
|
-
end
|
7
|
+
include Flags
|
15
8
|
|
16
9
|
def initialize(model, name, options = {}, type = nil)
|
17
10
|
super
|
@@ -33,10 +26,6 @@ module DataMapper
|
|
33
26
|
end
|
34
27
|
end
|
35
28
|
|
36
|
-
def custom?
|
37
|
-
true
|
38
|
-
end
|
39
|
-
|
40
29
|
def load(value)
|
41
30
|
flag_map[value]
|
42
31
|
end
|
data/lib/dm-types/flag.rb
CHANGED
@@ -1,17 +1,10 @@
|
|
1
1
|
require 'dm-core'
|
2
|
+
require 'dm-types/support/flags'
|
2
3
|
|
3
4
|
module DataMapper
|
4
5
|
class Property
|
5
6
|
class Flag < Integer
|
6
|
-
|
7
|
-
|
8
|
-
attr_reader :flag_map
|
9
|
-
|
10
|
-
def self.[](*values)
|
11
|
-
klass = ::Class.new(self)
|
12
|
-
klass.flags(values)
|
13
|
-
klass
|
14
|
-
end
|
7
|
+
include Flags
|
15
8
|
|
16
9
|
def initialize(model, name, options = {}, type = nil)
|
17
10
|
super
|
@@ -24,10 +17,6 @@ module DataMapper
|
|
24
17
|
end
|
25
18
|
end
|
26
19
|
|
27
|
-
def custom?
|
28
|
-
true
|
29
|
-
end
|
30
|
-
|
31
20
|
def load(value)
|
32
21
|
return [] if value.nil? || value <= 0
|
33
22
|
|
data/lib/dm-types/json.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
module DataMapper
|
2
|
+
class Property
|
3
|
+
module Flags
|
4
|
+
def self.included(base)
|
5
|
+
base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
6
|
+
extend DataMapper::Property::Flags::ClassMethods
|
7
|
+
|
8
|
+
accept_options :flags
|
9
|
+
attr_reader :flag_map
|
10
|
+
|
11
|
+
class << self
|
12
|
+
attr_accessor :generated_classes
|
13
|
+
end
|
14
|
+
|
15
|
+
self.generated_classes = {}
|
16
|
+
RUBY
|
17
|
+
end
|
18
|
+
|
19
|
+
def custom?
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
module ClassMethods
|
24
|
+
# TODO: document
|
25
|
+
# @api public
|
26
|
+
def [](*values)
|
27
|
+
if klass = generated_classes[values.flatten]
|
28
|
+
klass
|
29
|
+
else
|
30
|
+
klass = ::Class.new(self)
|
31
|
+
klass.flags(values)
|
32
|
+
|
33
|
+
generated_classes[values.flatten] = klass
|
34
|
+
|
35
|
+
klass
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/dm-types/uri.rb
CHANGED
@@ -4,6 +4,8 @@ require 'dm-core'
|
|
4
4
|
module DataMapper
|
5
5
|
class Property
|
6
6
|
class URI < String
|
7
|
+
# Maximum length chosen based on recommendation:
|
8
|
+
# http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-an-url
|
7
9
|
length 2000
|
8
10
|
|
9
11
|
def custom?
|
@@ -18,9 +20,6 @@ module DataMapper
|
|
18
20
|
super || primitive?(value) || value.kind_of?(::String)
|
19
21
|
end
|
20
22
|
|
21
|
-
# Maximum length chosen based on recommendation:
|
22
|
-
# http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-an-url
|
23
|
-
|
24
23
|
def load(value)
|
25
24
|
Addressable::URI.parse(value)
|
26
25
|
end
|
data/lib/dm-types/uuid.rb
CHANGED
data/spec/fixtures/article.rb
CHANGED
@@ -1,37 +1,35 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
3
|
-
module Fixtures
|
2
|
+
module TypesFixtures
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
class Article
|
5
|
+
#
|
6
|
+
# Behaviors
|
7
|
+
#
|
9
8
|
|
10
|
-
|
9
|
+
include ::DataMapper::Resource
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
#
|
12
|
+
# Properties
|
13
|
+
#
|
15
14
|
|
16
|
-
|
15
|
+
property :id, Serial
|
17
16
|
|
18
|
-
|
19
|
-
|
17
|
+
property :title, String, :length => 255
|
18
|
+
property :body, Text
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
20
|
+
property :created_at, DateTime
|
21
|
+
property :updated_at, DateTime
|
22
|
+
property :published_at, DateTime
|
24
23
|
|
25
|
-
|
24
|
+
property :slug, Slug
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
#
|
27
|
+
# Hooks
|
28
|
+
#
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
end
|
30
|
+
before :valid? do
|
31
|
+
self.slug = self.title
|
32
|
+
end
|
33
|
+
end # Article
|
36
34
|
end
|
37
35
|
end
|
data/spec/fixtures/bookmark.rb
CHANGED
@@ -1,25 +1,23 @@
|
|
1
1
|
module DataMapper
|
2
|
-
module
|
3
|
-
module Fixtures
|
2
|
+
module TypesFixtures
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
class Bookmark
|
5
|
+
#
|
6
|
+
# Behaviors
|
7
|
+
#
|
9
8
|
|
10
|
-
|
9
|
+
include ::DataMapper::Resource
|
11
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
#
|
12
|
+
# Properties
|
13
|
+
#
|
15
14
|
|
16
|
-
|
15
|
+
property :id, Serial
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
17
|
+
property :title, String, :length => 255
|
18
|
+
property :shared, Boolean
|
19
|
+
property :uri, URI
|
20
|
+
property :tags, Yaml
|
21
|
+
end # Bookmark
|
24
22
|
end
|
25
23
|
end
|