Module: Pry::Helpers::Text

Extended by:
Text
Included in:
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.

Parameters:

  • text (String, #to_s)

Returns:

  • (String)

    text



41
42
43
# File 'lib/pry/helpers/text.rb', line 41

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)


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

def default(text)
  text.to_s
end

#indent(text, chars) ⇒ Object

Returns text indented by chars spaces.

Parameters:

  • text (String)
  • chars (Fixnum)


95
96
97
# File 'lib/pry/helpers/text.rb', line 95

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:



58
59
60
61
62
63
64
# File 'lib/pry/helpers/text.rb', line 58

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:



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

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.



33
34
35
# File 'lib/pry/helpers/text.rb', line 33

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.

Parameters:

  • text (#each_line)
  • offset (Fixnum)

Returns:

  • (String)


82
83
84
85
86
87
88
89
# File 'lib/pry/helpers/text.rb', line 82

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