virtus 0.0.8 → 0.0.9
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/.travis.yml +75 -3
- data/History.md +7 -1
- data/VERSION +1 -1
- data/lib/virtus/support/type_lookup.rb +9 -2
- data/spec/unit/virtus/type_lookup/determine_type_spec.rb +20 -7
- data/virtus.gemspec +10 -10
- metadata +41 -71
data/.travis.yml
CHANGED
@@ -4,11 +4,83 @@ rvm:
|
|
4
4
|
- 1.8.7
|
5
5
|
- 1.9.2
|
6
6
|
- 1.9.3
|
7
|
-
-
|
8
|
-
- rbx-2.0
|
7
|
+
- ruby-head
|
9
8
|
- ree
|
10
9
|
- jruby
|
11
|
-
-
|
10
|
+
- rbx
|
11
|
+
env:
|
12
|
+
-
|
13
|
+
- JRUBY_OPTS="--1.8"
|
14
|
+
- JRUBY_OPTS="--1.9"
|
15
|
+
- RBXOPT="-X18"
|
16
|
+
- RBXOPT="-X19"
|
17
|
+
matrix:
|
18
|
+
exclude:
|
19
|
+
# exclude 1.8.7
|
20
|
+
- rvm: 1.8.7
|
21
|
+
env: JRUBY_OPTS="--1.8"
|
22
|
+
- rvm: 1.8.7
|
23
|
+
env: JRUBY_OPTS="--1.9"
|
24
|
+
- rvm: 1.8.7
|
25
|
+
env: RBXOPT="-X18"
|
26
|
+
- rvm: 1.8.7
|
27
|
+
env: RBXOPT="-X19"
|
28
|
+
|
29
|
+
# exclude 1.9.2
|
30
|
+
- rvm: 1.9.2
|
31
|
+
env: JRUBY_OPTS="--1.8"
|
32
|
+
- rvm: 1.9.2
|
33
|
+
env: JRUBY_OPTS="--1.9"
|
34
|
+
- rvm: 1.9.2
|
35
|
+
env: RBXOPT="-X18"
|
36
|
+
- rvm: 1.9.2
|
37
|
+
env: RBXOPT="-X19"
|
38
|
+
|
39
|
+
# exclude 1.9.3
|
40
|
+
- rvm: 1.9.3
|
41
|
+
env: JRUBY_OPTS="--1.8"
|
42
|
+
- rvm: 1.9.3
|
43
|
+
env: JRUBY_OPTS="--1.9"
|
44
|
+
- rvm: 1.9.3
|
45
|
+
env: RBXOPT="-X18"
|
46
|
+
- rvm: 1.9.3
|
47
|
+
env: RBXOPT="-X19"
|
48
|
+
|
49
|
+
# exclude ruby-head
|
50
|
+
- rvm: ruby-head
|
51
|
+
env: JRUBY_OPTS="--1.8"
|
52
|
+
- rvm: ruby-head
|
53
|
+
env: JRUBY_OPTS="--1.9"
|
54
|
+
- rvm: ruby-head
|
55
|
+
env: RBXOPT="-X18"
|
56
|
+
- rvm: ruby-head
|
57
|
+
env: RBXOPT="-X19"
|
58
|
+
|
59
|
+
# exclude ree
|
60
|
+
- rvm: ree
|
61
|
+
env: JRUBY_OPTS="--1.8"
|
62
|
+
- rvm: ree
|
63
|
+
env: JRUBY_OPTS="--1.9"
|
64
|
+
- rvm: ree
|
65
|
+
env: RBXOPT="-X18"
|
66
|
+
- rvm: ree
|
67
|
+
env: RBXOPT="-X19"
|
68
|
+
|
69
|
+
# exclude jruby
|
70
|
+
- rvm: jruby
|
71
|
+
env:
|
72
|
+
- rvm: jruby
|
73
|
+
env: RBXOPT="-X18"
|
74
|
+
- rvm: jruby
|
75
|
+
env: RBXOPT="-X19"
|
76
|
+
|
77
|
+
# exclude rbx
|
78
|
+
- rvm: rbx
|
79
|
+
env:
|
80
|
+
- rvm: rbx
|
81
|
+
env: JRUBY_OPTS="--1.8"
|
82
|
+
- rvm: rbx
|
83
|
+
env: JRUBY_OPTS="--1.9"
|
12
84
|
notifications:
|
13
85
|
email:
|
14
86
|
- piotr.solnica@gmail.com
|
data/History.md
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
# v0.0.8 to-be-released
|
2
2
|
|
3
|
+
* [fixed] Fix in type lookup for anonymous classes (dkubb)
|
4
|
+
|
5
|
+
[Compare v0.0.8..master](https://github.com/solnic/virtus/compare/v0.0.8...master)
|
6
|
+
|
7
|
+
# v0.0.8 2011-08-25
|
8
|
+
|
3
9
|
* [fixed] Fixed conflict with ActiveModel (RichGuk)
|
4
10
|
* [changed] Renamed Coercion::String.to_class => Coercion::String.to_constant (emmanuel)
|
5
11
|
|
6
|
-
[Compare v0.0.7..master](https://github.com/solnic/virtus/compare/v0.0.7...
|
12
|
+
[Compare v0.0.7..master](https://github.com/solnic/virtus/compare/v0.0.7...v0.0.8)
|
7
13
|
|
8
14
|
# v0.0.7 2011-07-31
|
9
15
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.9
|
@@ -64,7 +64,14 @@ module Virtus
|
|
64
64
|
#
|
65
65
|
# @api private
|
66
66
|
def determine_type_from_primitive(primitive)
|
67
|
-
|
67
|
+
type = nil
|
68
|
+
|
69
|
+
descendants.reverse_each do |descendant|
|
70
|
+
next unless primitive <= descendant.primitive
|
71
|
+
type = descendant if type.nil? || type.primitive > descendant.primitive
|
72
|
+
end
|
73
|
+
|
74
|
+
type
|
68
75
|
end
|
69
76
|
|
70
77
|
# Return the class given a string
|
@@ -83,7 +90,7 @@ module Virtus
|
|
83
90
|
end
|
84
91
|
end
|
85
92
|
|
86
|
-
if RUBY_VERSION < '1.9'
|
93
|
+
if RUBY_VERSION < '1.9' || RUBY_ENGINE == 'rbx'
|
87
94
|
def determine_type_from_string(string)
|
88
95
|
if string =~ TYPE_FORMAT && const_defined?(string)
|
89
96
|
const_get(string)
|
@@ -3,21 +3,34 @@ require 'spec_helper'
|
|
3
3
|
describe Virtus::TypeLookup, '#determine_type' do
|
4
4
|
subject { object.determine_type(class_or_name) }
|
5
5
|
|
6
|
-
let(:object) do
|
6
|
+
let!(:object) do
|
7
7
|
Class.new do
|
8
8
|
extend Virtus::DescendantsTracker
|
9
9
|
extend Virtus::TypeLookup
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
let(:
|
14
|
-
object.const_set :
|
15
|
-
def self.primitive
|
16
|
-
::String
|
17
|
-
end
|
13
|
+
let!(:default) do
|
14
|
+
object.const_set :Object, Class.new(object) {
|
15
|
+
def self.primitive() ::Object end
|
18
16
|
}
|
19
17
|
end
|
20
18
|
|
19
|
+
let!(:descendant) do
|
20
|
+
object.const_set :String, Class.new(default) {
|
21
|
+
def self.primitive() ::String end
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
# add a default subclass to the top of the stack
|
26
|
+
let!(:extra) { Class.new(default) }
|
27
|
+
|
28
|
+
# assert the classes are subclassed in a specific order that will trigger
|
29
|
+
# the bug that this commit fixes. Do not remove or change the order below.
|
30
|
+
it 'has the descendants in the expected order' do
|
31
|
+
object.descendants.should == [ extra, descendant, default ]
|
32
|
+
end
|
33
|
+
|
21
34
|
context 'with a TypeLookup class' do
|
22
35
|
context 'when the argument is a descendant of the object' do
|
23
36
|
let(:class_or_name) { descendant }
|
@@ -42,7 +55,7 @@ describe Virtus::TypeLookup, '#determine_type' do
|
|
42
55
|
context 'when the argument is an unknown class' do
|
43
56
|
let(:class_or_name) { Class.new }
|
44
57
|
|
45
|
-
it { should
|
58
|
+
it { should equal(default) }
|
46
59
|
end
|
47
60
|
end
|
48
61
|
|
data/virtus.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
7
|
+
s.name = "virtus"
|
8
|
+
s.version = "0.0.9"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email = [
|
11
|
+
s.authors = ["Piotr Solnica"]
|
12
|
+
s.date = "2011-10-11"
|
13
|
+
s.description = "Attributes for your plain ruby objects"
|
14
|
+
s.email = ["piotr@rubyverse.com"]
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
17
|
"README.md",
|
@@ -166,10 +166,10 @@ Gem::Specification.new do |s|
|
|
166
166
|
"tasks/yard.rake",
|
167
167
|
"virtus.gemspec"
|
168
168
|
]
|
169
|
-
s.homepage =
|
170
|
-
s.require_paths = [
|
171
|
-
s.rubygems_version =
|
172
|
-
s.summary =
|
169
|
+
s.homepage = "https://github.com/solnic/virtus"
|
170
|
+
s.require_paths = ["lib"]
|
171
|
+
s.rubygems_version = "1.8.11"
|
172
|
+
s.summary = "Attributes for your plain ruby objects"
|
173
173
|
|
174
174
|
if s.respond_to? :specification_version then
|
175
175
|
s.specification_version = 3
|
metadata
CHANGED
@@ -1,82 +1,59 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: virtus
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 8
|
10
|
-
version: 0.0.8
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Piotr Solnica
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2011-10-11 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: backports
|
16
|
+
requirement: &70244296925160 !ruby/object:Gem::Requirement
|
22
17
|
none: false
|
23
|
-
requirements:
|
18
|
+
requirements:
|
24
19
|
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
hash: 3
|
27
|
-
segments:
|
28
|
-
- 2
|
29
|
-
- 3
|
30
|
-
- 0
|
20
|
+
- !ruby/object:Gem::Version
|
31
21
|
version: 2.3.0
|
32
|
-
name: backports
|
33
22
|
type: :development
|
34
23
|
prerelease: false
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
|
24
|
+
version_requirements: *70244296925160
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: jeweler
|
27
|
+
requirement: &70244296924200 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
29
|
+
requirements:
|
40
30
|
- - ~>
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
hash: 7
|
43
|
-
segments:
|
44
|
-
- 1
|
45
|
-
- 6
|
46
|
-
- 4
|
31
|
+
- !ruby/object:Gem::Version
|
47
32
|
version: 1.6.4
|
48
|
-
name: jeweler
|
49
33
|
type: :development
|
50
34
|
prerelease: false
|
51
|
-
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
|
35
|
+
version_requirements: *70244296924200
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &70244296923000 !ruby/object:Gem::Requirement
|
54
39
|
none: false
|
55
|
-
requirements:
|
40
|
+
requirements:
|
56
41
|
- - ~>
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
hash: 23
|
59
|
-
segments:
|
60
|
-
- 2
|
61
|
-
- 6
|
62
|
-
- 0
|
42
|
+
- !ruby/object:Gem::Version
|
63
43
|
version: 2.6.0
|
64
|
-
name: rspec
|
65
44
|
type: :development
|
66
45
|
prerelease: false
|
67
|
-
|
46
|
+
version_requirements: *70244296923000
|
68
47
|
description: Attributes for your plain ruby objects
|
69
|
-
email:
|
48
|
+
email:
|
70
49
|
- piotr@rubyverse.com
|
71
50
|
executables: []
|
72
|
-
|
73
51
|
extensions: []
|
74
|
-
|
75
|
-
extra_rdoc_files:
|
52
|
+
extra_rdoc_files:
|
76
53
|
- LICENSE
|
77
54
|
- README.md
|
78
55
|
- TODO
|
79
|
-
files:
|
56
|
+
files:
|
80
57
|
- .rvmrc
|
81
58
|
- .travis.yml
|
82
59
|
- .yardopts
|
@@ -226,36 +203,29 @@ files:
|
|
226
203
|
- virtus.gemspec
|
227
204
|
homepage: https://github.com/solnic/virtus
|
228
205
|
licenses: []
|
229
|
-
|
230
206
|
post_install_message:
|
231
207
|
rdoc_options: []
|
232
|
-
|
233
|
-
require_paths:
|
208
|
+
require_paths:
|
234
209
|
- lib
|
235
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
210
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
236
211
|
none: false
|
237
|
-
requirements:
|
238
|
-
- -
|
239
|
-
- !ruby/object:Gem::Version
|
240
|
-
|
241
|
-
segments:
|
212
|
+
requirements:
|
213
|
+
- - ! '>='
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
segments:
|
242
217
|
- 0
|
243
|
-
|
244
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
|
+
hash: 4092436988871240492
|
219
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
245
220
|
none: false
|
246
|
-
requirements:
|
247
|
-
- -
|
248
|
-
- !ruby/object:Gem::Version
|
249
|
-
|
250
|
-
segments:
|
251
|
-
- 0
|
252
|
-
version: "0"
|
221
|
+
requirements:
|
222
|
+
- - ! '>='
|
223
|
+
- !ruby/object:Gem::Version
|
224
|
+
version: '0'
|
253
225
|
requirements: []
|
254
|
-
|
255
226
|
rubyforge_project:
|
256
|
-
rubygems_version: 1.8.
|
227
|
+
rubygems_version: 1.8.11
|
257
228
|
signing_key:
|
258
229
|
specification_version: 3
|
259
230
|
summary: Attributes for your plain ruby objects
|
260
231
|
test_files: []
|
261
|
-
|