Class: Pry::Code::LOC Private

Inherits:
Object show all
Defined in:
lib/pry/code/loc.rb

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

Examples:

loc = LOC.new("def example\n  :example\nend", 1)
puts loc.line
def example
  :example
end
#=> nil

loc.indent(3)
loc.line #=> "   def example\n  :example\nend"

Instance Attribute Summary collapse

Instance Method Summary collapse

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

Parameters:

  • line (String)

    The line of code.

  • lineno (Integer)

    The position of the +line+.



27
28
29
# File 'lib/pry/code/loc.rb', line 27

def initialize(line, lineno)
  @tuple = [line.chomp, lineno.to_i]
end

Instance Attribute Details

#tupleArray<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.

Returns:

  • (Array<String, Integer>)


23
24
25
# File 'lib/pry/code/loc.rb', line 23

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.

Returns:

  • (Boolean)


32
33
34
# File 'lib/pry/code/loc.rb', line 32

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.

Parameters:

  • max_width (Integer) (defaults to: 0)


62
63
64
65
66
# File 'lib/pry/code/loc.rb', line 62

def add_line_number(max_width = 0, color = false)
  padded = lineno.to_s.rjust(max_width)
  colorized_lineno = color ? Pry::Helpers::BaseHelpers.colorize_code(padded) : padded
  tuple[0] = "#{ colorized_lineno }: #{ 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+.

Parameters:

  • marker_lineno (Integer)

    If it is equal to the lineno, then prepend a hashrocket. Otherwise, an empty marker.



73
74
75
76
77
78
79
80
# File 'lib/pry/code/loc.rb', line 73

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.

Parameters:

  • code_type (Symbol)


54
55
56
# File 'lib/pry/code/loc.rb', line 54

def colorize(code_type)
  tuple[0] = CodeRay.scan(line, code_type).term
end

#dupObject

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.



36
37
38
# File 'lib/pry/code/loc.rb', line 36

def dup
  self.class.new(line, lineno)
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.

Parameters:

  • distance (Integer)


86
87
88
# File 'lib/pry/code/loc.rb', line 86

def indent(distance)
  tuple[0] = "#{ ' ' * distance }#{ line }"
end

#lineString

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:

  • (String)


41
42
43
# File 'lib/pry/code/loc.rb', line 41

def line
  tuple.first
end

#linenoInteger

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:

  • (Integer)


46
47
48
# File 'lib/pry/code/loc.rb', line 46

def lineno
  tuple.last
end