Method: ModelView::Resolver.fields_for_scope

Defined in:
lib/model_view/resolver.rb

.fields_for_scope(scope, scope_data) ⇒ Object



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 = extract_fields(ModelView::ROOT, scope_data)
  scope_fields = scope == ModelView::ROOT ? {} : extract_fields(scope, scope_data)

  extended_scopes = scope_data[scope][:extends] || []
  extended_fields = extended_scopes.reduce({}) do |res, scope|
    res.merge(extract_fields(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