class Humr::Splitter::Pattern

Public Class Methods

new(pattern) click to toggle source
# File lib/humr/splitter/pattern.rb, line 8
def initialize(pattern)
  @pattern = Regexp.new(pattern)
  @pattern_la = Regexp.new("(?=#{pattern})")
end

Public Instance Methods

sub_each_field(line) { |field, index| ... } click to toggle source
# File lib/humr/splitter/pattern.rb, line 13
def sub_each_field(line, &block)
  scanner = StringScanner.new(line)

  result = ''
  index = 1

  loop do
    field = scanner.scan_until(@pattern_la)
    if field
      result << yield(field, index)
      result << scanner.scan(@pattern)
      index += 1
    else
      result << yield(scanner.rest, index)
      break
    end
  end

  result
end