Permalink
Browse files

Add some comments for `Pry::Code::LOC`

Signed-off-by: Kyrylo Silin <kyrylosilin@gmail.com>
  • Loading branch information...
1 parent 2abf232 commit 8b2fb32b72eb76bd98282fcc185a1d8f2627eefc @kyrylo kyrylo committed Jan 5, 2013
Showing with 34 additions and 0 deletions.
  1. +34 −0 lib/pry/code.rb
View
@@ -26,9 +26,29 @@ def Code(obj)
# arbitrary chaining of formatting methods without mutating the original
# object.
class Code
+ # 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.
+ #
+ # @api private
+ # @example
+ # 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"
class LOC
+
+ # @return [Array<String, Integer>]
attr_accessor :tuple
+ # @param [String] line The line of code.
+ # @param [Integer] lineno The position of the +line+.
def initialize(line, lineno)
@tuple = [line.chomp, lineno.to_i]
end
@@ -37,18 +57,28 @@ def dup
self.class.new(line, lineno)
end
+ # @return [String]
def line
tuple.first
end
+ # @return [Integer]
def lineno
tuple.last
end
+ # Paints the `line` of code.
+ #
+ # @param [Symbol] code_type
+ # @return [void]
def colorize(code_type)
tuple[0] = CodeRay.scan(line, code_type).term
end
+ # Prepends the line number `lineno` to the `line`.
+ #
+ # @param [Integer] max_width
+ # @return [void]
def add_line_numbers(max_width = 0)
padded = lineno.to_s.rjust(max_width)
colorized_lineno = Pry::Helpers::BaseHelpers.colorize_code(padded)
@@ -64,6 +94,10 @@ def add_marker(marker_lineno)
end
end
+ # Indents the `line` with +distance+ spaces.
+ #
+ # @param [Integer] distance
+ # @return [void]
def indent(distance)
tuple[0] = "#{ ' ' * distance }#{ line }"
end

0 comments on commit 8b2fb32

Please sign in to comment.