Sha256: 92f80578c5efc22d013c30e39b1f5ba8f35e296e6cfd60fb59bbe7af29599780

Contents?: true

Size: 1.23 KB

Versions: 4

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

module GitStats
  module Inspector
    def to_s
      vars = defined_ivars.map do |sym|
        value = if ivars_to_be_filtered.include?(sym)
                  '...'
                else
                  var = instance_variable_get(sym)
                  var.is_a?(String) ? %("#{var}") : var.inspect
                end
        [sym, value].join('=')
      end
      vars = vars.join(', ').presence
      "#<#{[self.class, vars].compact.join(' ')}>"
    end

    def inspect
      to_s
    end

    def pretty_print(pp)
      pp.object_address_group(self) do
        pp.seplist(defined_ivars, proc { pp.text(',') }) do |attr_name|
          pp.breakable(' ')
          pp.group(1) do
            pp.text(attr_name.to_s)
            pp.text('=')
            if ivars_to_be_filtered.include?(attr_name)
              pp.text('...')
            else
              pp.pp(instance_variable_get(attr_name))
            end
          end
        end
      end
    end

    private

    def ivars_to_be_displayed
      instance_variables
    end

    def ivars_to_be_filtered
      []
    end

    def defined_ivars
      (ivars_to_be_displayed | ivars_to_be_filtered).select { |sym| instance_variable_defined?(sym) }
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nova_git_stats-2.4.2 lib/git_stats/inspector.rb
nova_git_stats-2.4.1 lib/git_stats/inspector.rb
nova_git_stats-2.4.0 lib/git_stats/inspector.rb
nova_git_stats-2.3.0 lib/git_stats/inspector.rb