class Blueprinter::View

Attributes

definition_order[R]
excluded_field_names[R]
fields[R]
included_view_names[R]
name[R]
view_transformers[R]

Public Class Methods

new(name, fields: {}, included_view_names: [], excluded_view_names: [], transformers: []) click to toggle source
# File lib/blueprinter/view.rb, line 7
def initialize(name, fields: {}, included_view_names: [], excluded_view_names: [], transformers: [])
  @name = name
  @fields = fields
  @included_view_names = included_view_names
  @excluded_field_names = excluded_view_names
  @view_transformers = transformers
  @definition_order = []
  @sort_by_definition = Blueprinter.configuration.sort_fields_by.eql?(:definition)
end

Public Instance Methods

<<(field) click to toggle source
# File lib/blueprinter/view.rb, line 71
def <<(field)
  track_definition_order(field.name,false)
  fields[field.name] = field
end
add_transformer(custom_transformer) click to toggle source
# File lib/blueprinter/view.rb, line 67
def add_transformer(custom_transformer)
  view_transformers << custom_transformer
end
exclude_field(field_name) click to toggle source
# File lib/blueprinter/view.rb, line 57
def exclude_field(field_name)
  excluded_field_names << field_name
end
exclude_fields(field_names) click to toggle source
# File lib/blueprinter/view.rb, line 61
def exclude_fields(field_names)
  field_names.each do |field_name|
    excluded_field_names << field_name
  end
end
include_view(view_name) click to toggle source
# File lib/blueprinter/view.rb, line 45
def include_view(view_name)
  track_definition_order(view_name)
  included_view_names << view_name
end
include_views(view_names) click to toggle source
# File lib/blueprinter/view.rb, line 50
def include_views(view_names)
  view_names.each do |view_name|
    track_definition_order(view_name)
    included_view_names << view_name
  end
end
inherit(view) click to toggle source
# File lib/blueprinter/view.rb, line 27
def inherit(view)
  view.fields.values.each do |field|
    self << field
  end

  view.included_view_names.each do |view_name|
    include_view(view_name)
  end

  view.excluded_field_names.each do |field_name|
    exclude_field(field_name)
  end

  view.view_transformers.each do |transformer|
    add_transformer(transformer)
  end
end
track_definition_order(method, is_view = true) click to toggle source
# File lib/blueprinter/view.rb, line 21
def track_definition_order(method, is_view = true)
  if @sort_by_definition
    @definition_order << DefinitionPlaceholder.new(method, is_view)
  end
end
transformers() click to toggle source
# File lib/blueprinter/view.rb, line 17
def transformers
  view_transformers.empty? ? Blueprinter.configuration.default_transformers : view_transformers
end