Module: Pry::Helpers::Text

Extended by:
Text
Included in:
Command, Command::Cat::ExceptionFormatter, 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
}

Instance Method Summary collapse

Instance Method Details

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

Returns text as bold text for use on a terminal.



51
52
53
# File 'lib/pry/helpers/text.rb', line 51

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.



60
61
62
# File 'lib/pry/helpers/text.rb', line 60

def default(text)
  text.to_s
end

#indent(text, chars) ⇒ Object

Returns text indented by chars spaces.



111
112
113
# File 'lib/pry/helpers/text.rb', line 111

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

#no_color { ... }

This method returns an undefined value.

Yields:

  • Yields a block with color turned off.



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

def no_color
  boolean = Pry.config.color
  Pry.config.color = false
  yield
ensure
  Pry.config.color = boolean
end

#no_pager { ... }

This method returns an undefined value.

Yields:

  • Yields a block with paging turned off.



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

def no_pager
  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.



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

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

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

Returns text in a numbered list, beginning at offset.



98
99
100
101
102
103
104
105
# File 'lib/pry/helpers/text.rb', line 98

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