Module: Piggly::Util::LineNumbers

Defined in:
lib/piggly/util/line_numbers.rb

Class Method Summary collapse

Class Method Details

.at_offset(source, offset) ⇒ Object

1-based line number for a byte offset, clamped to [1, count(source)].



14
15
16
17
18
19
20
21
# File 'lib/piggly/util/line_numbers.rb', line 14

def at_offset(source, offset)
  return 1 if source.nil? || source.empty?

  offset = [[offset, 0].max, source.length].min
  line = source[0...offset].count("\n") + 1
  max_line = count(source)
  [[line, 1].max, max_line].min
end

.count(source) ⇒ Object



7
8
9
10
11
# File 'lib/piggly/util/line_numbers.rb', line 7

def count(source)
  return 0 if source.nil? || source.empty?

  source.lines.count
end