Module: Pry::Helpers::Text

Defined in:
lib/pry/helpers/text.rb

Overview

The methods defined on Text are available to custom commands via Command#text.

Constant Summary collapse

COLORS =
{
  "black"   => 0,
  "red"     => 1,
  "green"   => 2,
  "yellow"  => 3,
  "blue"    => 4,
  "purple"  => 5,
  "magenta" => 5,
  "cyan"    => 6,
  "white"   => 7
}

Class Method Summary collapse

Class Method Details

.bold(text) ⇒ String Also known as: bright_default

Returns text as bold text for use on a terminal.

Parameters:

  • text (String, #to_s)

Returns:

  • (String)

    text



44
45
46
# File 'lib/pry/helpers/text.rb', line 44

def bold(text)
  "\e[1m#{text}\e[0m"
end

.default(text) ⇒ String

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

Parameters:

  • text (String, #to_s)

Returns:

  • (String)


53
54
55
# File 'lib/pry/helpers/text.rb', line 53

def default(text)
  text.to_s
end

.indent(text, chars) ⇒ Object

Returns text indented by chars spaces.

Parameters:

  • text (String)
  • chars (Fixnum)


98
99
100
# File 'lib/pry/helpers/text.rb', line 98

def indent(text, chars)
  text.lines.map { |l| "#{' ' * chars}#{l}" }.join
end

.no_color { ... } ⇒ void

This method returns an undefined value.

Executes the block with ‘Pry.config.color` set to false.

Yields:



61
62
63
64
65
66
67
# File 'lib/pry/helpers/text.rb', line 61

def no_color(&block)
  boolean = Pry.config.color
  Pry.config.color = false
  yield
ensure
  Pry.config.color = boolean
end

.no_pager { ... } ⇒ void

This method returns an undefined value.

Executes the block with ‘Pry.config.pager` set to false.

Yields:



72
73
74
75
76
77
78
# File 'lib/pry/helpers/text.rb', line 72

def no_pager(&block)
  boolean = Pry.config.pager
  Pry.config.pager = false
  yield
ensure
  Pry.config.pager = boolean
end

.strip_color(text) ⇒ String

Remove any color codes from text.

Parameters:

  • text (String, #to_s)

Returns:

  • (String)

    text stripped of any color codes.



36
37
38
# File 'lib/pry/helpers/text.rb', line 36

def strip_color(text)
  text.to_s.gsub(/\e\[.*?(\d)+m/ , '')
end

.with_line_numbers(text, offset, color = :blue) ⇒ String

Returns text in a numbered list, beginning at offset.

Parameters:

  • text (#each_line)
  • offset (Fixnum)

Returns:

  • (String)


85
86
87
88
89
90
91
92
# File 'lib/pry/helpers/text.rb', line 85

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)
    "#{self.send(color, adjusted_index)}: #{line}"
  end.join
end