Sha256: 7ec1e631cea9d544fb347cac2576d77a2850831baf65d048727989525712b260

Contents?: true

Size: 1.53 KB

Versions: 27

Compression:

Stored size: 1.53 KB

Contents

module PryState
  module Printer
    extend self

    WIDTH = ENV['COLUMNS'] ? ENV['COLUMNS'].to_i : 80
    MAX_LEFT_COLUMN_WIDTH = 25
    # Ratios are 1:3 left:right, or 1/4 left
    COLUMN_RATIO = 3 # right column to left ratio
    LEFT_COLUMN_WIDTH = [(WIDTH / (COLUMN_RATIO + 1)).floor, MAX_LEFT_COLUMN_WIDTH].min

    # Defaults to true
    TRUNCATE = ENV['PRY_STATE_TRUNCATE'] != 'false'

    def trunc_and_print var, value, var_color, value_color
      var_name_adjusted = var.to_s.ljust(LEFT_COLUMN_WIDTH)
      # Ensure at least 1 space between left and right columns
      left_column_text = truncate(var_name_adjusted, LEFT_COLUMN_WIDTH - 1) + ' '
      print Pry::Helpers::Text.send(var_color, left_column_text)
      print stringified_val_or_nil(value, value_color, WIDTH - LEFT_COLUMN_WIDTH)
      print "\n"
    end

    private
    def truncate text, length
      if text.nil? then return end
      return text unless ENV['TRUNCATE']
      l = length - "...".length
      (text.chars.to_a.size > length ? text.chars.to_a[0...l].join + "..." : text).to_s
    end

    def stringified_val_or_nil value, color, length
      value = stringify_value value
      if value.empty?
        Pry::Helpers::Text.red 'nil'
      else
        text = truncate(value, length)
        Pry::Helpers::Text.send(color, text)
      end
    end

    def stringify_value value
      if value.class == String
        "\"#{value}\""
      elsif value.class == Array
        "len:#{value.count} #{value.inspect}"
      else
        value.inspect
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
pryx-0.11.0 lib/pry-state/printer.rb
pryx-0.10.3 lib/pry-state/printer.rb
pryx-0.10.2 lib/pry-state/printer.rb
pryx-0.10.1 lib/pry-state/printer.rb
pryx-0.10.0 lib/pry-state/printer.rb
pryx-0.9.2 lib/pry-state/printer.rb
pryx-0.9.0 lib/pry-state/printer.rb
pryx-0.8.7 lib/pry-state/printer.rb
pryx-0.8.6 lib/pry-state/printer.rb
pryx-0.8.5 lib/pry-state/printer.rb
pryx-0.8.4 lib/pry-state/printer.rb
pryx-0.8.3 lib/pry-state/printer.rb
pryx-0.8.2 lib/pry-state/printer.rb
pryx-0.8.1 lib/pry-state/printer.rb
pryx-0.8.0 lib/pry-state/printer.rb
pryx-0.7.2 lib/pry-state/printer.rb
pryx-0.7.0 lib/pry-state/printer.rb
pryx-0.6.1 lib/pry-state/printer.rb
pryx-0.6.0 lib/pry-state/printer.rb
pryx-0.5.0 lib/pry-state/printer.rb