module Pry::Helpers::Text

The methods defined on {Text} are available to custom commands via {Pry::Command#text}.

Constants

COLORS

Public Instance Methods

bold(text) click to toggle source

Returns text as bold text for use on a terminal.

@param [String, to_s] text @return [String] text

# File lib/pry/helpers/text.rb, line 54
def bold(text)
  "\e[1m#{text}\e[0m"
end
default(text) click to toggle source

Returns `text` in the default foreground colour. Use this instead of “black” or “white” when you mean absence of colour.

@param [String, to_s] text @return [String]

# File lib/pry/helpers/text.rb, line 63
def default(text)
  text.to_s
end
indent(text, chars) click to toggle source

Returns text indented by chars spaces.

@param [String] text @param [Fixnum] chars

# File lib/pry/helpers/text.rb, line 113
def indent(text, chars)
  text.lines.map { |l| "#{' ' * chars}#{l}" }.join
end
no_color() { || ... } click to toggle source

@yield

Yields a block with color turned off.

@return [void]

# File lib/pry/helpers/text.rb, line 73
def no_color
  boolean = Pry.config.color
  Pry.config.color = false
  yield
ensure
  Pry.config.color = boolean
end
no_pager() { || ... } click to toggle source

@yield

Yields a block with paging turned off.

@return [void]

# File lib/pry/helpers/text.rb, line 87
def no_pager
  boolean = Pry.config.pager
  Pry.config.pager = false
  yield
ensure
  Pry.config.pager = boolean
end
strip_color(text) click to toggle source

Remove any color codes from text.

@param [String, to_s] text @return [String] text stripped of any color codes.

# File lib/pry/helpers/text.rb, line 46
def strip_color(text)
  text.to_s.gsub(/(\001)?\e\[.*?(\d)+m(\002)?/, '')
end
with_line_numbers(text, offset, color = :blue) click to toggle source

Returns text in a numbered list, beginning at offset.

@param [#each_line] text @param [Fixnum] offset @return [String]

# File lib/pry/helpers/text.rb, line 100
def with_line_numbers(text, offset, color = :blue)
  lines = text.each_line.to_a
  max_width = (offset + lines.count).to_s.length
  lines.each_with_index.map do |line, index|
    adjusted_index = (index + offset).to_s.rjust(max_width)
    "#{send(color, adjusted_index)}: #{line}"
  end.join
end