active_mappers 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dbb3ead7f2e01c74596860dd9d08e128cf654538b70edc0141617909d81230fd
4
- data.tar.gz: '08488c7003f0a900295f4e86b9a6f975b5f317c2490821a69060693f2c36d127'
3
+ metadata.gz: 16811a18fe1b63819d670a4e585c4332a8e33bcdd9d17fe6bae637a1a77aa6d7
4
+ data.tar.gz: 5b56675cc1c54d601edf2b56d1fe7de8e777201731aa520419c956c21d998269
5
5
  SHA512:
6
- metadata.gz: 17b41436d9c4477d5fe21936140a103c1c3f2e528d734601e69653e3d5e608117a97fa67c27d2742bd45b2ee170d85bea0940319152b0fe1b0d5bea26668b6f4
7
- data.tar.gz: 06a3873ae63e407e1c4f35c3ae471502fbc30d1b935b21115aaaffada25e95060bae5498a44965913201276cd7dd9a10a0d2d892c28bbc829c60b79d931026a7
6
+ metadata.gz: a58442bba50d6f30e59cb401a3a1f04b62c20fd6ebeeb5f7674d09b4b522c9afa8a6ca79cbeeb43e6b315c9541193242e1b8e2847adc1fd05914b75d310ffadc
7
+ data.tar.gz: b56d83421fe67e28be9bea210aecc83202b4798166fac5dc7cdffde10a55cee3c6e55c0ec511c7c19dd7aa54da0a312615c9b229eb7ec8c7aa97c5dc381d4f67
@@ -32,24 +32,23 @@ module ActiveMappers
32
32
 
33
33
  def self.relation(key, mapper = nil, optional_path = nil)
34
34
  path = optional_path || key
35
-
36
35
  each do |resource|
37
- mapper ||= "::#{resource.send(key).class.name}Mapper".constantize
38
- { key => mapper.with(path.to_s.split('.').inject(resource, :try), rootless: true) }
36
+ mapper_to_use = mapper || KeyTransformer.resource_to_mapper(resource.send(key), self)
37
+ { key => mapper_to_use.with(path.to_s.split('.').inject(resource, :try), rootless: true) }
39
38
  end
40
39
  end
41
40
 
42
41
  def self.polymorphic(key)
43
42
  each do |resource|
44
- resource_mapper = "::#{resource.send("#{key}_type")}Mapper".constantize
43
+ resource_mapper = "#{KeyTransformer.base_namespace(self)}::#{resource.send("#{key}_type")}Mapper".constantize
45
44
  { key => resource_mapper.with(resource.send(key), rootless: true) }
46
45
  end
47
46
  end
48
47
 
49
48
  def self.acts_as_polymorph
50
49
  each do |resource|
51
- mapper = "::#{resource.class}Mapper".constantize
52
- mapper.with(resource, rootless: true)
50
+ mapper = KeyTransformer.resource_to_mapper(resource, self)
51
+ mapper.with(resource, rootless: true)
53
52
  rescue NameError
54
53
  raise NotImplementedError, 'No mapper found for this type of resource'
55
54
  end
@@ -12,6 +12,10 @@ module ActiveMappers
12
12
  Setup.camelcase_keys ? hash.to_lower_camel_case : hash
13
13
  end
14
14
 
15
+ def self.resource_to_mapper(resource, class_from)
16
+ "#{base_namespace(class_from)}::#{resource.class.name}Mapper".constantize
17
+ end
18
+
15
19
  def initialize(name)
16
20
  @name = name
17
21
  end
@@ -36,5 +40,11 @@ module ActiveMappers
36
40
 
37
41
  (Setup.root_keys_transformer || transformer).call(@name)
38
42
  end
43
+
44
+ def self.base_namespace(class_from)
45
+ base_namespace = class_from.name.split('::')[0] rescue ""
46
+ base_namespace = '' unless Setup.ignored_namespaces.include?(base_namespace.downcase.to_sym)
47
+ base_namespace
48
+ end
39
49
  end
40
50
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_mappers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michaël Villeneuve