active_mappers 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.
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