active_mappers 0.1.1 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_mappers.rb +19 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e9d7b63d23e7e9e8a79b066058c61d64917668cd18f26b476d0895f6794696b
|
4
|
+
data.tar.gz: f98714d581527d72053252a149368a84969898514f87121e47e2a25628904eb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6fe36f84e215e9166c54afaba45e3b6cf17ebe7f8e314ff5f9ee2af68996aeea2c797437eb5c8babc706d0599b844b6b9439049784bae5e003e5b3d24c0bb42
|
7
|
+
data.tar.gz: efb87c243721d55659fe3e4169c2b933514e8124571448d452141ccb4cf50f79a6bef148b61e6f13b3285f6fb02da4bc8be3cd5d116e43eccdc310d5e5bbdba9
|
data/lib/active_mappers.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'active_support'
|
2
2
|
require 'active_support/core_ext/object/try'
|
3
3
|
require 'active_support/core_ext/string/inflections'
|
4
|
+
require 'active_support/core_ext/string'
|
4
5
|
require_relative 'core_ext/hash'
|
5
6
|
|
6
7
|
module ActiveMappers
|
@@ -34,21 +35,21 @@ module ActiveMappers
|
|
34
35
|
|
35
36
|
each do |resource|
|
36
37
|
mapper ||= "::#{resource.send(key).class.name}Mapper".constantize
|
37
|
-
{ key => mapper.with(path.to_s.split('.').inject(resource, :try)) }
|
38
|
+
{ key => mapper.with(path.to_s.split('.').inject(resource, :try), rootless: true) }
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
41
42
|
def self.polymorphic(key)
|
42
43
|
each do |resource|
|
43
44
|
resource_mapper = "::#{resource.send("#{key}_type")}Mapper".constantize
|
44
|
-
{ key => resource_mapper.with(resource.send(key)) }
|
45
|
+
{ key => resource_mapper.with(resource.send(key), rootless: true) }
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
49
|
def self.acts_as_polymorph
|
49
50
|
each do |resource|
|
50
51
|
mapper = "::#{resource.class}Mapper".constantize
|
51
|
-
mapper.with(resource)
|
52
|
+
mapper.with(resource, rootless: true)
|
52
53
|
rescue NameError
|
53
54
|
raise NotImplementedError, 'No mapper found for this type of resource'
|
54
55
|
end
|
@@ -58,8 +59,21 @@ module ActiveMappers
|
|
58
59
|
@@renderers[name] = (@@renderers[name] || []) << block
|
59
60
|
end
|
60
61
|
|
61
|
-
def self.with(args)
|
62
|
-
|
62
|
+
def self.with(args, options = {})
|
63
|
+
if options[:rootless]
|
64
|
+
args.respond_to?(:each) ? all(args) : one(args)
|
65
|
+
else
|
66
|
+
render_with_root(args, options)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.render_with_root(args, options = {})
|
71
|
+
resource = options[:root] || self.name.gsub('Mapper', '').downcase
|
72
|
+
if args.respond_to?(:each)
|
73
|
+
{ resource.tableize.gsub('/', '_').to_sym => all(args) }
|
74
|
+
else
|
75
|
+
{ resource.to_sym => one(args) }
|
76
|
+
end
|
63
77
|
end
|
64
78
|
|
65
79
|
def self.all(collection)
|