class HamdownCore::LineParser
Constants
- BLOCK_WITH_SPACES
Regex to check for blocks with spaces around arguments. Not to be confused with multiline script. For example:
foo.each do | bar | = bar
- MULTILINE_SUFFIX
Attributes
filename[R]
lineno[R]
Public Class Methods
new(filename, template_str)
click to toggle source
# File lib/hamdown_core/line_parser.rb, line 6 def initialize(filename, template_str) @filename = filename @lines = template_str.each_line.map { |line| line.chomp.rstrip } @lineno = 0 end
Public Instance Methods
has_next?()
click to toggle source
# File lib/hamdown_core/line_parser.rb, line 21 def has_next? @lineno < @lines.size end
next_line(in_filter: false)
click to toggle source
# File lib/hamdown_core/line_parser.rb, line 12 def next_line(in_filter: false) line = move_next if !in_filter && is_multiline?(line) next_multiline(line) else line end end
Private Instance Methods
is_multiline?(line)
click to toggle source
# File lib/hamdown_core/line_parser.rb, line 37 def is_multiline?(line) line = line.lstrip line.end_with?(MULTILINE_SUFFIX) && line !~ BLOCK_WITH_SPACES end
move_back()
click to toggle source
# File lib/hamdown_core/line_parser.rb, line 48 def move_back @lineno -= 1 end
move_next()
click to toggle source
# File lib/hamdown_core/line_parser.rb, line 42 def move_next @lines[@lineno].tap do @lineno += 1 end end
next_multiline(line)
click to toggle source
# File lib/hamdown_core/line_parser.rb, line 52 def next_multiline(line) buf = [line[0, line.size - 1]] while @lineno < @lines.size line = move_next if is_multiline?(line) line = line[0, line.size - 1] buf << line.lstrip else move_back break end end buf.join("\n") end