class Thinreports::SectionReport::Builder::ItemBuilder

Constants

Context

Attributes

item[R]
parent_schema[R]

Public Class Methods

new(item_schema, parent_schema) click to toggle source
# File lib/thinreports/section_report/builder/item_builder.rb, line 11
def initialize(item_schema, parent_schema)
  @item = Core::Shape::Interface(nil, item_schema)
  @parent_schema = parent_schema
end

Public Instance Methods

build(item_params) click to toggle source
# File lib/thinreports/section_report/builder/item_builder.rb, line 16
def build(item_params)
  params = build_params(item_params)

  item.visible(params[:display]) if params.key?(:display)
  item.value(params[:value]) if params.key?(:value)
  item.styles(params[:styles]) if params.key?(:styles)

  if item.internal.format.attributes['type'] == Core::Shape::StackView::TYPE_NAME
    StackViewBuilder.new(item).update(params)
  end

  item
end

Private Instance Methods

build_params(params) click to toggle source
# File lib/thinreports/section_report/builder/item_builder.rb, line 34
def build_params(params)
  return {} unless params

  case params
  when Hash
    params
  when Proc
    params.call(Context.new(parent_schema))
  else
    { value: params }
  end
end