Sha256: 92eb90a6bf86ab692d551ab3a826036c01961ad04edb4b134f3f4ac8dc19529f
Contents?: true
Size: 1.33 KB
Versions: 5
Compression:
Stored size: 1.33 KB
Contents
# frozen_string_literal: true module Katalyst module Tables module Collection module Type module Helpers # Adds support for multiple: true module Multiple def initialize(multiple: false, **) super(**) @multiple = multiple end def multiple? @multiple end def cast(value) return (multiple? ? [] : nil) if value.nil? if multiple? && value.is_a?(::Array) value.map { |v| super(v) } elsif multiple? [super] else super end end def deserialize(value) if multiple? && value.is_a?(::Array) value.map { |v| super(v) }.flatten elsif multiple? [super].flatten.compact else super end end def serialize(value) if multiple? && value.is_a?(::Array) value.map { |v| super(v) }.flatten else super end end using Extensions def default_value multiple? ? [] : super end end end end end end end
Version data entries
5 entries across 5 versions & 1 rubygems