Sha256: 57824d1a7cff51adb987d56e7fa1457d8afcbda6a8f235a0c80c20ddf8596e2f
Contents?: true
Size: 1.57 KB
Versions: 2
Compression:
Stored size: 1.57 KB
Contents
# frozen_string_literal: true module Katalyst module Tables module Collection module Type class Enum < Value include Helpers::Multiple def initialize(multiple: true, **) super end def type :enum end def examples_for(scope, attribute) _, model, column = model_and_column_for(scope, attribute) raise ArgumentError, "Unknown enum #{column} for #{model}" unless model.defined_enums.has_key?(column) keys = model.defined_enums[column].keys if attribute.value_before_type_cast.present? keys = keys.select { |key| key.include?(attribute.value_before_type_cast.last) } end keys.map { |key| example(key, describe_key(model, attribute, key)) } end private def cast_value(value) value.to_s end def describe_key(model, attribute, key) label = model.human_attribute_name(attribute.name).downcase value = model.human_attribute_name("#{attribute.name}.#{key}").downcase description = "#{model.model_name.human} #{label} is #{value}" description += " (default)" if default?(attribute, key) description end def default?(attribute, value) if multiple? attribute.original_value&.intersection(cast(value))&.any? else attribute.default_value.eql?(cast(value)) end end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
katalyst-tables-3.4.6 | lib/katalyst/tables/collection/type/enum.rb |
katalyst-tables-3.4.5 | lib/katalyst/tables/collection/type/enum.rb |