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
}.freeze

Instance Method Summary collapse

Instance Method Details

#bold(text) ⇒ String

Returns text as bold text for use on a terminal.

Parameters:

  • text (String, #to_s)

Returns:

  • (String)

    text


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

def bold(text)
  "\001\e[1m\002#{text}\001\e[0m\002"
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)

63
64
65
# File 'lib/pry/helpers/text.rb', line 63

def default(text)
  text.to_s
end

#indent(text, chars) ⇒ Object

Returns text indented by chars spaces.

Parameters:

  • text (String)
  • chars (Fixnum)

113
114
115
# File 'lib/pry/helpers/text.rb', line 113

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.


73
74
75
76
77
78
79
# 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 { ... }

This method returns an undefined value.

Yields:

  • Yields a block with paging turned off.


87
88
89
90
91
92
93
# 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) ⇒ String

Remove any color codes from text.

Parameters:

  • text (String, #to_s)

Returns:

  • (String)

    text stripped of any color codes.


46
47
48
# File 'lib/pry/helpers/text.rb', line 46

def strip_color(text)
  text.to_s.gsub(/(\001)?(\e\[(\d[;\d]?)*m)(\002)?/, '')
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)

100
101
102
103
104
105
106
107
# 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