class MaRuKu::In::Markdown::BlockLevelParser::LineSource

This represents a source of lines that can be consumed.

It is the twin of CharSource.

Attributes

parent[R]

Public Class Methods

new(lines, parent=nil, parent_offset=nil) click to toggle source
# 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

Public Instance Methods

cur_index() click to toggle source
# File lib/maruku/input/linesource.rb, line 87
def cur_index
        @lines_index
end
cur_line() click to toggle source
# File lib/maruku/input/linesource.rb, line 41
def cur_line()  @lines[@lines_index] end
describe() click to toggle source
# 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
ignore_line() click to toggle source
# File lib/maruku/input/linesource.rb, line 51
def ignore_line
        raise "Over the rainbow" if @lines_index >= @lines.size 
        @lines_index += 1
end
next_line() click to toggle source
# File lib/maruku/input/linesource.rb, line 42
def next_line() @lines[@lines_index+1] end
original_line_number(index) click to toggle source
# 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
shift_line() click to toggle source
# 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
tell_me_the_future() click to toggle source

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