We store the lines we're working on as objects of class Line. These contain the text of the line, along with a flag indicating the line type, and an indentation level.
# File rdoc/markup/lines.rb, line 42 def initialize(text) @text = text.dup @deleted = false # expand tabs 1 while @text.gsub!(/\t+/) { ' ' * (8*$&.length - $`.length % 8)} && $~ #` # Strip trailing whitespace @text.sub!(/\s+$/, '') # and look for leading whitespace if @text.length > 0 @text =~ /^(\s*)/ @leading_spaces = $1.length else @leading_spaces = INFINITY end end
Return true if this line is blank
# File rdoc/markup/lines.rb, line 62 def blank? @text.empty? end
stamp a line with a type, a level, a prefix, and a flag
# File rdoc/markup/lines.rb, line 67 def stamp(type, level, param="", flag=nil) @type, @level, @param, @flag = type, level, param, flag end