Class: MaRuKu::In::Markdown::BlockLevelParser::LineSource
- Inherits:
-
Object
- Object
- MaRuKu::In::Markdown::BlockLevelParser::LineSource
- Includes:
- Strings
- Defined in:
- lib/maruku/input/linesource.rb
Overview
This represents a source of lines that can be consumed.
It is the twin of CharSource.
Constant Summary
Constant Summary
Constants included from Strings
Strings::Abbreviation, Strings::AttributeDefinitionList, Strings::Definition, Strings::EMailAddress, Strings::FootnoteText, Strings::HeaderWithAttributes, Strings::HeaderWithId, Strings::IncompleteLink, Strings::InlineAttributeList, Strings::LinkRegex, Strings::MightBeTableHeader, Strings::Sep, Strings::TabSize, Strings::TableSeparator
Instance Attribute Summary (collapse)
-
- (Object) parent
readonly
Returns the value of attribute parent.
Instance Method Summary (collapse)
- - (Object) cur_index
- - (Object) cur_line
- - (Object) describe
- - (Object) ignore_line
-
- (LineSource) initialize(lines, parent = nil, parent_offset = nil)
constructor
A new instance of LineSource.
- - (Object) next_line
- - (Object) original_line_number(index)
- - (Object) shift_line
-
- (Object) tell_me_the_future
Returns the type of next line as a string breaks at first :definition.
Methods included from Strings
#add_tabs, #dbg_describe_ary, #force_linebreak?, #line_md_type, #normalize_key_and_value, #num_leading_hashes, #number_of_leading_spaces, #parse_email_headers, #sanitize_ref_id, #spaces_before_first_char, #split_lines, #strip_hashes, #strip_indent, #unquote
Constructor Details
- (LineSource) initialize(lines, parent = nil, parent_offset = nil)
A new instance of LineSource
33 34 35 36 37 38 39 |
# 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 |
Instance Attribute Details
- (Object) parent (readonly)
Returns the value of attribute parent
31 32 33 |
# File 'lib/maruku/input/linesource.rb', line 31 def parent @parent end |
Instance Method Details
- (Object) cur_index
87 88 89 |
# File 'lib/maruku/input/linesource.rb', line 87 def cur_index @lines_index end |
- (Object) cur_line
41 |
# File 'lib/maruku/input/linesource.rb', line 41 def cur_line() @lines[@lines_index] end |
- (Object) describe
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# 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 |
- (Object) ignore_line
51 52 53 54 |
# File 'lib/maruku/input/linesource.rb', line 51 def ignore_line raise "Over the rainbow" if @lines_index >= @lines.size @lines_index += 1 end |
- (Object) next_line
42 |
# File 'lib/maruku/input/linesource.rb', line 42 def next_line() @lines[@lines_index+1] end |
- (Object) original_line_number(index)
79 80 81 82 83 84 85 |
# 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 |
- (Object) shift_line
44 45 46 47 48 49 |
# 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 |
- (Object) tell_me_the_future
Returns the type of next line as a string breaks at first :definition
93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# 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 |