Sha256: 0167fb2d71cfff5e0bc902bfc451c4b8111482c194763721d2634459429ee226

Contents?: true

Size: 1.27 KB

Versions: 12

Compression:

Stored size: 1.27 KB

Contents

module Avo
  class GridCollector
    attr_accessor :cover_field
    attr_accessor :title_field
    attr_accessor :body_field

    def initialize
      @cover_field = nil
      @title_field = nil
      @body_field = nil
    end

    def cover(field_name, as:, **args, &block)
      field_parser = Avo::Dsl::FieldParser.new(id: field_name, as: as, **args, &block).parse
      self.cover_field = field_parser.instance if field_parser.valid?
    end

    def title(field_name, as:, **args, &block)
      field_parser = Avo::Dsl::FieldParser.new(id: field_name, as: as, **args, &block).parse
      self.title_field = field_parser.instance if field_parser.valid?
    end

    def body(field_name, as:, **args, &block)
      field_parser = Avo::Dsl::FieldParser.new(id: field_name, as: as, **args, &block).parse
      self.body_field = field_parser.instance if field_parser.valid?
    end

    def hydrate(record:, view:, resource:)
      cover_field.hydrate(record: record, view: view, resource: resource) if cover_field.present?
      title_field.hydrate(record: record, view: view, resource: resource) if title_field.present?
      body_field.hydrate(record: record, view: view, resource: resource) if body_field.present?

      self
    end

    def blank?
      title_field.blank?
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
avo-3.0.0.pre12 lib/avo/grid_collector.rb
avo-3.0.0.pre10 lib/avo/grid_collector.rb
avo-3.0.0.pre11 lib/avo/grid_collector.rb
avo-3.0.0.pre8 lib/avo/grid_collector.rb
avo-3.0.0.pre9 lib/avo/grid_collector.rb
avo-3.0.0.pre7 lib/avo/grid_collector.rb
avo-3.0.0.pre5 lib/avo/grid_collector.rb
avo-3.0.0.pre6 lib/avo/grid_collector.rb
avo-3.0.0.pre4 lib/avo/grid_collector.rb
avo-3.0.0.pre3 lib/avo/grid_collector.rb
avo-3.0.0.pre2 lib/avo/grid_collector.rb
avo-3.0.0.pre1 lib/avo/grid_collector.rb