active_mappers 1.0.2 → 1.1.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 +33 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09fb98503adb90ce297d3977dc57352e3fd63c430f64281b249c082085f8efcb'
|
4
|
+
data.tar.gz: 9ee6faa1d1822d0537c9f398e3b0cc52eba25efbf7322f178f1f08410c073e8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecd026ed51cb7a01ebe86c6101e8e5392c9421186cabf5b6727e951f0d19012047be0a2f2a1a9d277a80aeb12b1c4887573b112d09ee542f32f1d313d25e6b6f
|
7
|
+
data.tar.gz: a46e97010beedf1d8bc15670ff716bf4896995516e3d5efcbbfcadfe6fad7358e2c46ae6f6b432c4dc0e12bf02e272fc9968c6bcfc3e906f07cbae48806fe80e
|
data/lib/active_mappers.rb
CHANGED
@@ -7,6 +7,8 @@ require_relative 'active_mappers/key_transformer'
|
|
7
7
|
module ActiveMappers
|
8
8
|
class Base
|
9
9
|
@@renderers = {}
|
10
|
+
@@initial_renderers = {}
|
11
|
+
@@scopes = {}
|
10
12
|
|
11
13
|
def self.attributes(*params)
|
12
14
|
each do |resource|
|
@@ -59,11 +61,37 @@ module ActiveMappers
|
|
59
61
|
end
|
60
62
|
|
61
63
|
def self.with(args, options = {})
|
62
|
-
|
64
|
+
evaluate_scopes(options[:scope])
|
65
|
+
|
66
|
+
response = if options[:rootless]
|
63
67
|
args.respond_to?(:each) ? all(args) : one(args)
|
64
68
|
else
|
65
69
|
render_with_root(args, options)
|
66
70
|
end
|
71
|
+
|
72
|
+
reset_renderers_before_scopes
|
73
|
+
response
|
74
|
+
end
|
75
|
+
|
76
|
+
def self.evaluate_scopes(scope_name)
|
77
|
+
@@initial_renderers[name] = [] + (@@renderers[name] || [])
|
78
|
+
return if scope_name.nil?
|
79
|
+
|
80
|
+
found_scope = (@@scopes[name] || []).detect { |s| s[:name] === scope_name }
|
81
|
+
raise "ActiveMappers [#{name}] Scope named #{scope_name} has not been declared or is not a block" if found_scope.nil? || found_scope[:lambda].nil? || !found_scope[:lambda].respond_to?(:call)
|
82
|
+
|
83
|
+
found_scope[:lambda].call
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.scope(*params, &block)
|
87
|
+
raise "ActiveMappers [#{name}] scope must be a bloc" if block.nil? || !block.respond_to?(:call)
|
88
|
+
|
89
|
+
params.each do |param|
|
90
|
+
@@scopes[name] = (@@scopes[name] || []) << {
|
91
|
+
name: param,
|
92
|
+
lambda: block,
|
93
|
+
}
|
94
|
+
end
|
67
95
|
end
|
68
96
|
|
69
97
|
def self.render_with_root(args, options = {})
|
@@ -89,5 +117,9 @@ module ActiveMappers
|
|
89
117
|
|
90
118
|
KeyTransformer.format_keys(renderers)
|
91
119
|
end
|
120
|
+
|
121
|
+
def self.reset_renderers_before_scopes
|
122
|
+
@@renderers[name] = @@initial_renderers[name]
|
123
|
+
end
|
92
124
|
end
|
93
125
|
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
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michaël Villeneuve
|
@@ -53,8 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
requirements: []
|
56
|
-
|
57
|
-
rubygems_version: 2.7.3
|
56
|
+
rubygems_version: 3.0.1
|
58
57
|
signing_key:
|
59
58
|
specification_version: 4
|
60
59
|
summary: Slick, fast view layer for you Rails API.
|