Sha256: 5c9569425be314357828f1b5fb0db635328fdc5b6a093870a4a5d0e4c1991ea4

Contents?: true

Size: 976 Bytes

Versions: 3

Compression:

Stored size: 976 Bytes

Contents

# frozen_string_literal: true

module Coactive
  module Contexts
    module Inspect
      extend ActiveSupport::Concern

      def to_s
        "#<#{self.class} #{self.class.inspect(@_data)}>"
      end

      class_methods do
        def inspect(data)
          data.map { |k, v| "#{k}=#{Coactive::Contexts::Inspect.call(v)}" }.join(', ')
        end
      end

      class << self
        class_attribute :max_num, :max_length
        self.max_num = 5
        self.max_length = 300

        def call(data)
          if data.is_a?(Array)
            str = data.take(max_num).map { |v| call(v) }.join(', ')
            str += '...' if data.size > max_num
            "[#{str}]"
          elsif data.is_a?(Hash)
            str = data.take(max_num).map { |k, v| "#{k}: #{call(v)}" }.join(', ')
            str += '...' if data.size > max_num
            "{#{str}}"
          else
            data.to_s.truncate(max_length)
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
coactive-0.4.1 lib/coactive/contexts/inspect.rb
coactive-0.4.0 lib/coactive/contexts/inspect.rb
coactive-0.3.0 lib/coactive/contexts/inspect.rb