Sha256: f6ff4d7afe99f36a50a32a16226a044f3ad820c77f15bbcc40d5ced42ed0d14a

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module DynamicScaffold
  module List
    class Item
      attr_reader :classnames, :html_attributes

      def initialize(config, *args, block)
        @config = config
        @html_attributes = args.extract_options!
        @classnames = @html_attributes.delete(:class)
        @attribute_name = args[0]
        @block = block
        @show_only = nil
      end

      def show_only(&block)
        @show_only = block
        self
      end

      def show?(view, record)
        return true if @show_only.nil?

        view.instance_exec(record, &@show_only)
      end

      def value(view, record)
        if @block
          view.instance_exec(record, @attribute_name, &@block)
        else
          record.public_send(@attribute_name)
        end
      end

      def label(label = nil)
        if label
          @label = label
          self
        elsif @label
          @label
        elsif @attribute_name
          @config.model.human_attribute_name @attribute_name
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dynamic_scaffold-2.0.1 lib/dynamic_scaffold/list/item.rb
dynamic_scaffold-2.0.0 lib/dynamic_scaffold/list/item.rb