Sha256: aa09ad0fd99dee8fff09376b8f9c748fe6084c80921c179cecfec70025f001bc
Contents?: true
Size: 1.37 KB
Versions: 1
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true require 'active_record' require 'active_serialize/version' require 'active_serialize/key_formatter' require 'active_serialize/class_methods' module ActiveSerialize extend ActiveSupport::Concern cattr_accessor :configs, default: { default: { rmv: [ ], add: [ ], key_format: nil } } class_methods do def active_serialize rmv: [ ], add: [ ], recursive: [ ], **configs extend ClassMethods include ToH delegate :active_serialize_keys, :_active_serialize, to: self _active_serialize.merge!(configs) active_serialize_rmv *Array(rmv) active_serialize_add *Array(add) active_serialize_add *Array(recursive), recursive: true end def active_serialize_default **args ActiveSerialize.configs[:default].merge!(args) end end module ToH def to_h(*groups, rmv: [ ], add: [ ], merge: { }) tran_key = ->(key) { _active_serialize[:map][key] || key } recursion = _active_serialize[:recursive].map { |key| [ tran_key.(key), public_send(key)&.to_ha ] }.to_h KeyFormatter.(_active_serialize[:key_format], active_serialize_keys(*groups, rmv: rmv, add: add) .map { |key| [ tran_key.(key), public_send(key) ] }.to_h .merge(merge).merge(recursion).deep_stringify_keys! ) end alias to_ha to_h end end ActiveRecord::Base.include ActiveSerialize
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_serialize-2.3.0 | lib/active_serialize.rb |