Sha256: c88306b97d5e26b15a9c3aee22aca2aa8805253588f98a11c8df61d5b5a7cf99
Contents?: true
Size: 1.6 KB
Versions: 3
Compression:
Stored size: 1.6 KB
Contents
# frozen_string_literal: true module Coactive module Contexts module Inspector class << self class_attribute :max_num, :max_length, :basic_classes self.max_num = 3 self.max_length = 100 self.basic_classes = [Module, Symbol, String, Numeric, TrueClass, FalseClass, NilClass, Regexp] def call(data) if data.is_a?(Array) inspect_array(data) elsif data.is_a?(Hash) inspect_hash(data) elsif basic_classes.any? { |klass| data.is_a?(klass) } inspect_basic(data) else inspect_object(data) end end private def inspect_array(data) str = data.take(max_num).map { |v| call(v) }.join(', ') str += "..." if data.size > max_num "[#{str}]" end def inspect_hash(data) str = data.take(max_num).map { |k, v| "#{k}: #{call(v)}" }.join(', ') str += "..." if data.size > max_num "{#{str}}" end def inspect_basic(data) inspected = data.inspect if inspected.length > max_length inspected[0..max_length] + '...' else inspected end end def inspect_object(data) if data.respond_to?(:id) "#<#{data.class}/#{data.id}>" elsif data.respond_to?(:attributes) && (attributes = data.attributes).is_a?(Hash) "#<#{data.class} #{inspect_hash(attributes)}>" else "#<#{data.class}:#{data.object_id}>" end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
coactive-0.6.0 | lib/coactive/contexts/inspector.rb |
coactive-0.5.2 | lib/coactive/contexts/inspector.rb |
coactive-0.5.1 | lib/coactive/contexts/inspector.rb |