Sha256: 1709a1c7d261b9533e0bbbd46e366426656eab70b37adf8f0cc1f67ac6b0ef68

Contents?: true

Size: 1.55 KB

Versions: 16

Compression:

Stored size: 1.55 KB

Contents

# typed: false
require "active_support/inflector"
require_relative "internal/with_attributes"

module Mangadex
  class MangadexObject
    extend T::Sig
    include Internal::WithAttributes

    def self.attributes_to_inspect
      to_inspect = [:id, :type]
      if self.respond_to?(:inspect_attributes)
        to_inspect.concat(Array(self.inspect_attributes))
      end

      to_inspect
    end

    def initialize(**args)
      args.keys.each do |attribute|
        original_attribute = attribute
        attribute = attribute.to_s.underscore
        attribute_to_set = "#{attribute}="

        if respond_to?(attribute_to_set)
          if %w(created_at updated_at publish_at).include?(attribute)
            args[original_attribute] = DateTime.parse(args[original_attribute])
          end

          send(attribute_to_set, args[original_attribute])
        else
          warn("Ignoring setter `#{attribute_to_set}` on #{self.class.name}...")
        end
      end

      self.type = self.class.type if self.type.blank?
    end

    def eq?(other)
      return id == other.id if respond_to?(:id) && other.respond_to?(:id)

      super
    end

    def hash
      id.hash
    end

    def inspect
      string = "#<#{self.class.name}:#{self.object_id} "
      fields = self.class.attributes_to_inspect.map do |field|
        value = self.send(field)
        if !value.nil?
          "@#{field}=\"#{value}\""
        end
      rescue => error
        "@#{field}[!]={#{error.class.name}: #{error.message}}"
      end.compact
      string << fields.join(" ") << ">"
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
mangadex-5.4.11.3 lib/mangadex/mangadex_object.rb
mangadex-5.4.11.2 lib/mangadex/mangadex_object.rb
mangadex-5.4.11.1 lib/mangadex/mangadex_object.rb
mangadex-5.4.11 lib/mangadex/mangadex_object.rb
mangadex-5.4.9 lib/mangadex/mangadex_object.rb
mangadex-5.3.3.4 lib/mangadex/mangadex_object.rb
mangadex-5.3.3.3 lib/mangadex/mangadex_object.rb
mangadex-5.3.3.2 lib/mangadex/mangadex_object.rb
mangadex-5.3.3.1 lib/mangadex/mangadex_object.rb
mangadex-5.3.3 lib/mangadex/mangadex_object.rb
mangadex-5.3.2 lib/mangadex/mangadex_object.rb
mangadex-5.3.1.3 lib/mangadex/mangadex_object.rb
mangadex-5.3.1.2 lib/mangadex/mangadex_object.rb
mangadex-5.3.1.1 lib/mangadex/mangadex_object.rb
mangadex-5.3.1 lib/mangadex/mangadex_object.rb
mangadex-5.3.0 lib/mangadex/mangadex_object.rb