Sha256: 60830b7280674e0d5d26a2d1aa6db862b65b4f68d371afe130c58b1ea63aab08

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 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
      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_accessor :scope, :options, :mutex
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mutils-0.2.28 lib/mutils/serialization/base_serializer.rb
mutils-0.2.27 lib/mutils/serialization/base_serializer.rb