Sha256: 206fa85279ebd7f0c0db75d4103848d78c0d608216629ad056367e4d5626fb46

Contents?: true

Size: 1.14 KB

Versions: 3

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require 'json/ext'
# module Mutils
module Mutils
  module Serialization
    # BaseSerializer: inherit this class to get Serializer functionality
    class BaseSerializer
      attr_reader :scope
      include Mutils::Serialization::SerializationIncludes
      include Mutils::Serialization::SerializationMethods
      include Mutils::Serialization::SerializationResults

      def initialize(object, options = {})
        options[:child] = false unless options[:child]
        self.scope = object
        self.options = options
        self.mutex = Mutex.new
      end

      def as_json(_options = {})
        if options[:child] || !self.class.include_root
          to_h
        else
          { class_name => to_h }
        end
      end

      def to_h
        generate_hash
      end

      def to_json(_options = {})
        JSON.generate(as_json, options)
      end

      def to_xml(_options = {})
        to_h.to_xml(root: class_name, skip_instruct: true, indent: 2)
      end

      def as_xml(_options = {})
        to_xml
      end

      private

      attr_writer :scope
      attr_accessor :options, :mutex
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mutils-0.2.31 lib/mutils/serialization/base_serializer.rb
mutils-0.2.30 lib/mutils/serialization/base_serializer.rb
mutils-0.2.29 lib/mutils/serialization/base_serializer.rb