16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/model_view/resolver.rb', line 16
def fields_for_scope(scope, scope_data)
root_scope_fields = (ModelView::ROOT, scope_data)
scope_fields = scope == ModelView::ROOT ? {} : (scope, scope_data)
extended_scopes = scope_data[scope][:extends] || []
extended_fields = extended_scopes.reduce({}) do |res, scope|
res.merge((scope, scope_data))
end
included_scopes = (scope_data[scope][:includes] || []).reduce({}) do |res, scope_name|
res[scope_name] = fields_for_scope(scope_name, scope_data)
res
end
{}.merge(root_scope_fields)
.merge(scope_fields)
.merge(extended_fields)
.merge(included_scopes)
end
|