dm-core 1.1.0.rc2 → 1.1.0.rc3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -8
- data/VERSION +1 -1
- data/dm-core.gemspec +24 -15
- data/lib/dm-core.rb +9 -48
- data/lib/dm-core/adapters.rb +1 -1
- data/lib/dm-core/adapters/abstract_adapter.rb +2 -1
- data/lib/dm-core/associations/many_to_many.rb +3 -3
- data/lib/dm-core/associations/many_to_one.rb +15 -4
- data/lib/dm-core/associations/one_to_many.rb +1 -1
- data/lib/dm-core/associations/relationship.rb +7 -6
- data/lib/dm-core/collection.rb +7 -2
- data/lib/dm-core/core_ext/pathname.rb +0 -14
- data/lib/dm-core/ext/array.rb +41 -0
- data/lib/dm-core/ext/blank.rb +24 -0
- data/lib/dm-core/ext/hash.rb +67 -0
- data/lib/dm-core/ext/module.rb +49 -0
- data/lib/dm-core/ext/object.rb +57 -0
- data/lib/dm-core/ext/singleton_class.rb +8 -0
- data/lib/dm-core/ext/string.rb +24 -0
- data/lib/dm-core/ext/try_dup.rb +12 -0
- data/lib/dm-core/model.rb +2 -1
- data/lib/dm-core/model/property.rb +3 -2
- data/lib/dm-core/property.rb +1 -1
- data/lib/dm-core/property/class.rb +1 -1
- data/lib/dm-core/property/date.rb +3 -3
- data/lib/dm-core/property/date_time.rb +3 -3
- data/lib/dm-core/property/time.rb +3 -3
- data/lib/dm-core/property/typecast/time.rb +2 -2
- data/lib/dm-core/property_set.rb +1 -1
- data/lib/dm-core/query.rb +9 -12
- data/lib/dm-core/resource.rb +2 -2
- data/lib/dm-core/spec/lib/counter_adapter.rb +1 -1
- data/lib/dm-core/spec/lib/spec_helper.rb +1 -1
- data/lib/dm-core/spec/shared/resource_spec.rb +2 -1
- data/lib/dm-core/support/equalizer.rb +1 -1
- data/lib/dm-core/support/hook.rb +0 -15
- data/lib/dm-core/support/inflections.rb +60 -0
- data/lib/dm-core/support/inflector.rb +3 -0
- data/lib/dm-core/support/inflector/inflections.rb +211 -0
- data/lib/dm-core/support/inflector/methods.rb +151 -0
- data/lib/dm-core/support/lazy_array.rb +4 -4
- data/lib/dm-core/support/mash.rb +176 -0
- data/lib/dm-core/support/subject.rb +1 -1
- data/lib/dm-core/version.rb +1 -1
- data/spec/public/model/relationship_spec.rb +2 -1
- data/spec/public/shared/collection_shared_spec.rb +5 -2
- data/spec/public/shared/finder_shared_spec.rb +10 -6
- data/spec/semipublic/adapters/in_memory_adapter_spec.rb +1 -1
- data/spec/semipublic/query_spec.rb +2 -2
- data/spec/semipublic/resource/state/immutable_spec.rb +2 -1
- data/spec/semipublic/resource/state_spec.rb +1 -3
- data/spec/semipublic/shared/resource_state_shared_spec.rb +2 -1
- data/spec/semipublic/shared/subject_shared_spec.rb +1 -1
- data/spec/support/core_ext/hash.rb +10 -0
- data/spec/support/core_ext/inheritable_attributes.rb +46 -0
- data/spec/unit/array_spec.rb +8 -20
- data/spec/unit/blank_spec.rb +62 -0
- data/spec/unit/data_mapper/ordered_set/hash_spec.rb +1 -1
- data/spec/unit/hash_spec.rb +8 -16
- data/spec/unit/lazy_array_spec.rb +3 -14
- data/spec/unit/mash_spec.rb +312 -0
- data/spec/unit/module_spec.rb +15 -15
- data/spec/unit/object_spec.rb +9 -9
- data/spec/unit/try_dup_spec.rb +8 -8
- metadata +32 -39
- data/lib/dm-core/core_ext/array.rb +0 -36
- data/lib/dm-core/core_ext/hash.rb +0 -30
- data/lib/dm-core/core_ext/module.rb +0 -46
- data/lib/dm-core/core_ext/object.rb +0 -31
- data/lib/dm-core/core_ext/string.rb +0 -22
- data/lib/dm-core/core_ext/try_dup.rb +0 -44
@@ -1,31 +0,0 @@
|
|
1
|
-
class Object
|
2
|
-
|
3
|
-
# @param name<String> The name of the constant to get, e.g. "Merb::Router".
|
4
|
-
#
|
5
|
-
# @return [Object] The constant corresponding to the name.
|
6
|
-
def full_const_get(name)
|
7
|
-
list = name.split("::")
|
8
|
-
list.shift if list.first.blank?
|
9
|
-
obj = self
|
10
|
-
list.each do |x|
|
11
|
-
# This is required because const_get tries to look for constants in the
|
12
|
-
# ancestor chain, but we only want constants that are HERE
|
13
|
-
obj = obj.const_defined?(x) ? obj.const_get(x) : obj.const_missing(x)
|
14
|
-
end
|
15
|
-
obj
|
16
|
-
end
|
17
|
-
|
18
|
-
# @param name<String> The name of the constant to get, e.g. "Merb::Router".
|
19
|
-
# @param value<Object> The value to assign to the constant.
|
20
|
-
#
|
21
|
-
# @return [Object] The constant corresponding to the name.
|
22
|
-
def full_const_set(name, value)
|
23
|
-
list = name.split("::")
|
24
|
-
toplevel = list.first.blank?
|
25
|
-
list.shift if toplevel
|
26
|
-
last = list.pop
|
27
|
-
obj = list.empty? ? Object : Object.full_const_get(list.join("::"))
|
28
|
-
obj.const_set(last, value) if obj && !obj.const_defined?(last)
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
class String
|
2
|
-
|
3
|
-
##
|
4
|
-
# Replace sequences of whitespace (including newlines) with either
|
5
|
-
# a single space or remove them entirely (according to param _spaced_)
|
6
|
-
#
|
7
|
-
# <<QUERY.compress_lines
|
8
|
-
# SELECT name
|
9
|
-
# FROM users
|
10
|
-
# QUERY => "SELECT name FROM users"
|
11
|
-
#
|
12
|
-
# @param [TrueClass, FalseClass] spaced (default=true)
|
13
|
-
# Determines whether returned string has whitespace collapsed or removed
|
14
|
-
#
|
15
|
-
# @return [String] Receiver with whitespace (including newlines) replaced
|
16
|
-
#
|
17
|
-
# @api public
|
18
|
-
def compress_lines(spaced = true)
|
19
|
-
split($/).map { |line| line.strip }.join(spaced ? ' ' : '')
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
class Object
|
2
|
-
# Override this in a child if it cannot be dup'ed
|
3
|
-
#
|
4
|
-
# @return [Object]
|
5
|
-
def try_dup
|
6
|
-
self.dup
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
class TrueClass
|
11
|
-
def try_dup
|
12
|
-
self
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
class FalseClass
|
17
|
-
def try_dup
|
18
|
-
self
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class Module
|
23
|
-
def try_dup
|
24
|
-
self
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
class NilClass
|
29
|
-
def try_dup
|
30
|
-
self
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
class Numeric
|
35
|
-
def try_dup
|
36
|
-
self
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
class Symbol
|
41
|
-
def try_dup
|
42
|
-
self
|
43
|
-
end
|
44
|
-
end
|