Sha256: 78a36ec7bcbfa9bbb4b7a00613e02570902d7f48fbda03b1d95263daded1e3f3
Contents?: true
Size: 1.02 KB
Versions: 22
Compression:
Stored size: 1.02 KB
Contents
# frozen_string_literal: true module Katalyst module Content module Types # Data serialization/deserialization for Katalyst::Content structural data class NodesType < ActiveRecord::Type::Json def serialize(value) super(value.as_json) end def deserialize(value) case value when nil nil when String deserialize(super) when Hash deserialize_params(value) when Array deserialize_array(value) end end private # Deserialize a params-style array, e.g. "0" => { ... } def deserialize_params(value) value.map do |index, attributes| Node.new(index:, **attributes) end.select(&:id).sort_by(&:index) end def deserialize_array(value) value.map.with_index do |attributes, index| Node.new(index:, **attributes) end.select(&:id).sort_by(&:index) end end end end end
Version data entries
22 entries across 22 versions & 1 rubygems