Method: Kramdown::Utils::StringScanner#current_line_number

Defined in:
lib/kramdown/utils/string_scanner.rb

#current_line_numberObject

Returns the line number for current charpos.

NOTE: Requires that all line endings are normalized to ‘n’

NOTE: Normally we’d have to add one to the count of newlines to get the correct line number. However we add the one indirectly by using a one-based start_line_number.



68
69
70
71
72
73
74
75
76
77
# File 'lib/kramdown/utils/string_scanner.rb', line 68

def current_line_number
  # Not using string[@previous_pos..best_pos].count('\n') because it is slower
  strscan = ::StringScanner.new(string)
  strscan.pos = @previous_pos
  old_pos = pos + 1
  @previous_line_number += 1 while strscan.skip_until(/\n/) && strscan.pos <= old_pos

  @previous_pos = (eos? ? pos : pos + 1)
  @previous_line_number
end