Sha256: 1531808ddec15b6012b43c24e5857e5f39703fa0ccd11a285428f0e64c9846e1

Contents?: true

Size: 538 Bytes

Versions: 13

Compression:

Stored size: 538 Bytes

Contents

# frozen_string_literal: true

module Shivers
  module Parts
    module Mixins
      module Multivaluable
        def multivalued?
          @traits.include?(:multivalued)
        end

        def merge(first, second)
          multivalued? ? concatable(first).concat(concatable(second)) : second
        end

        private

        def concatable(value)
          if value.nil?
            []
          elsif value.is_a?(Array)
            value
          else
            [value]
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
shivers-0.6.0.pre.15 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.14 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.13 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.12 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.11 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.10 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.9 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.8 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.7 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.6 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.5 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.4 lib/shivers/parts/mixins/multivaluable.rb
shivers-0.6.0.pre.3 lib/shivers/parts/mixins/multivaluable.rb