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) ⇒ void
private
Prepends the line number ‘lineno` to the `line`.
-
#add_marker(marker_lineno) ⇒ void
private
Prepends a marker “=>” or an empty marker to the
line
. -
#colorize(code_type) ⇒ void
private
Paints the ‘line` of code.
- #dup ⇒ Object private
- #handle_multiline_entries_from_edit_command(line, max_width) ⇒ Object private
-
#indent(distance) ⇒ void
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) ⇒ void
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) ⇒ void
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) ⇒ void
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) ⇒ void
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 |