Sha256: 1258f9d7d7cc10d4b7669c6aa2599f59d4d378d621bca271faad23d408107c90

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

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

1 entries across 1 versions & 1 rubygems

Version Path
nova_git_stats-2.2.0 lib/git_stats/inspector.rb