Class: Pry::Code::LOC Private
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Represents a line of code (which may, in fact, contain multiple lines if
the entirety was eval'd as a single unit following the edit
command).
A line of code is a tuple, which consists of a line and a line number. A
LOC
object's state (namely, the line parameter) can be changed via
instance methods. Pry::Code
heavily uses this class.
Instance Attribute Summary collapse
- #tuple ⇒ Array<String, Integer> readonly private
Instance Method Summary collapse
- #==(other) ⇒ Boolean private
-
#add_line_number(max_width = 0, color = false)
private
Prepends the line number
lineno
to theline
. -
#add_marker(marker_lineno)
private
Prepends a marker "=>" or an empty marker to the +line+.
-
#colorize(code_type)
private
Paints the
line
of code. - #dup ⇒ Object private
- #handle_multiline_entries_from_edit_command(line, max_width) ⇒ Object private
-
#indent(distance)
private
Indents the
line
with +distance+ spaces. -
#initialize(line, lineno) ⇒ LOC
constructor
private
A new instance of LOC.
- #line ⇒ String private
- #lineno ⇒ Integer private
Constructor Details
#initialize(line, lineno) ⇒ LOC
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of LOC.
29 30 31 |
# File 'lib/pry/code/loc.rb', line 29 def initialize(line, lineno) @tuple = [line.chomp, lineno.to_i] end |
Instance Attribute Details
#tuple ⇒ Array<String, Integer> (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
25 26 27 |
# File 'lib/pry/code/loc.rb', line 25 def tuple @tuple end |
Instance Method Details
#==(other) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
34 35 36 |
# File 'lib/pry/code/loc.rb', line 34 def ==(other) other.tuple == tuple end |
#add_line_number(max_width = 0, color = false)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Prepends the line number lineno
to the line
.
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/pry/code/loc.rb', line 64 def add_line_number(max_width = 0, color = false) padded = lineno.to_s.rjust(max_width) colorized_lineno = if color Pry::Helpers::BaseHelpers.colorize_code(padded) else padded end properly_padded_line = handle_multiline_entries_from_edit_command(line, max_width) tuple[0] = "#{colorized_lineno}: #{properly_padded_line}" end |
#add_marker(marker_lineno)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Prepends a marker "=>" or an empty marker to the +line+.
81 82 83 84 85 86 87 88 |
# File 'lib/pry/code/loc.rb', line 81 def add_marker(marker_lineno) tuple[0] = if lineno == marker_lineno " => #{line}" else " #{line}" end end |
#colorize(code_type)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Paints the line
of code.
56 57 58 |
# File 'lib/pry/code/loc.rb', line 56 def colorize(code_type) tuple[0] = SyntaxHighlighter.highlight(line, code_type) end |
#dup ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
38 39 40 |
# File 'lib/pry/code/loc.rb', line 38 def dup self.class.new(line, lineno) end |
#handle_multiline_entries_from_edit_command(line, max_width) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
98 99 100 101 102 |
# File 'lib/pry/code/loc.rb', line 98 def handle_multiline_entries_from_edit_command(line, max_width) line.split("\n").map.with_index do |inner_line, i| i.zero? ? inner_line : "#{' ' * (max_width + 2)}#{inner_line}" end.join("\n") end |
#indent(distance)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Indents the line
with +distance+ spaces.
94 95 96 |
# File 'lib/pry/code/loc.rb', line 94 def indent(distance) tuple[0] = "#{' ' * distance}#{line}" end |
#line ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
43 44 45 |
# File 'lib/pry/code/loc.rb', line 43 def line tuple.first end |
#lineno ⇒ Integer
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
48 49 50 |
# File 'lib/pry/code/loc.rb', line 48 def lineno tuple.last end |