Class: MaRuKu::In::Markdown::BlockLevelParser::LineSource
- Includes:
- Strings
- Defined in:
- lib/amp-front/third_party/maruku/input/linesource.rb
Overview
This represents a source of lines that can be consumed.
It is the twin of CharSource.
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
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
Instance Method Summary collapse
- #cur_index ⇒ Object
- #cur_line ⇒ Object
- #describe ⇒ Object
- #ignore_line ⇒ Object
-
#initialize(lines, parent = nil, parent_offset = nil) ⇒ LineSource
constructor
A new instance of LineSource.
- #next_line ⇒ Object
- #original_line_number(index) ⇒ Object
- #shift_line ⇒ Object
-
#tell_me_the_future ⇒ Object
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
#initialize(lines, parent = nil, parent_offset = nil) ⇒ LineSource
Returns a new instance of LineSource.
33 34 35 36 37 38 39 |
# File 'lib/amp-front/third_party/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
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
31 32 33 |
# File 'lib/amp-front/third_party/maruku/input/linesource.rb', line 31 def parent @parent end |
Instance Method Details
#cur_index ⇒ Object
87 88 89 |
# File 'lib/amp-front/third_party/maruku/input/linesource.rb', line 87 def cur_index @lines_index end |
#cur_line ⇒ Object
41 |
# File 'lib/amp-front/third_party/maruku/input/linesource.rb', line 41 def cur_line() @lines[@lines_index] end |
#describe ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/amp-front/third_party/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 ⇒ Object
51 52 53 54 |
# File 'lib/amp-front/third_party/maruku/input/linesource.rb', line 51 def ignore_line raise "Over the rainbow" if @lines_index >= @lines.size @lines_index += 1 end |
#next_line ⇒ Object
42 |
# File 'lib/amp-front/third_party/maruku/input/linesource.rb', line 42 def next_line() @lines[@lines_index+1] end |
#original_line_number(index) ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/amp-front/third_party/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 ⇒ Object
44 45 46 47 48 49 |
# File 'lib/amp-front/third_party/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 ⇒ Object
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/amp-front/third_party/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 |