This represents a source of lines that can be consumed.
It is the twin of CharSource.
# File lib/maruku/input/linesource.rb, line 33 def initialize(lines, parent=nil, parent_offset=nil) raise "NIL lines? " if not lines @lines = lines @lines_index = 0 @parent = parent @parent_offset = parent_offset end
# File lib/maruku/input/linesource.rb, line 87 def cur_index @lines_index end
# File lib/maruku/input/linesource.rb, line 41 def cur_line() @lines[@lines_index] end
# File lib/maruku/input/linesource.rb, line 56 def describe s = "At line #{original_line_number(@lines_index)}\n" context = 3 # lines from = [@lines_index-context, 0].max to = [@lines_index+context, @lines.size-1].min for i in from..to prefix = (i == @lines_index) ? '--> ' : ' '; l = @lines[i] s += "%10s %4s|%s" % [@lines[i].md_type.to_s, prefix, l] s += "|\n" end # if @parent # s << "Parent context is: \n" # s << add_tabs(@parent.describe,1,'|') # end s end
# File lib/maruku/input/linesource.rb, line 51 def ignore_line raise "Over the rainbow" if @lines_index >= @lines.size @lines_index += 1 end
# File lib/maruku/input/linesource.rb, line 42 def next_line() @lines[@lines_index+1] end
# File lib/maruku/input/linesource.rb, line 79 def original_line_number(index) if @parent return index + @parent.original_line_number(@parent_offset) else 1 + index end end
# File lib/maruku/input/linesource.rb, line 44 def shift_line() raise "Over the rainbow" if @lines_index >= @lines.size l = @lines[@lines_index] @lines_index += 1 return l end
Returns the type of next line as a string breaks at first :definition
# File lib/maruku/input/linesource.rb, line 93 def tell_me_the_future s = ""; num_e = 0; for i in @lines_index..@lines.size-1 c = case @lines[i].md_type when :text; "t" when :empty; num_e+=1; "e" when :definition; "d" else "o" end s += c break if c == "d" or num_e>1 end s end