Class: Humr::Splitter::Pattern

Inherits:
Object
  • Object
show all
Defined in:
lib/humr/splitter/pattern.rb

Instance Method Summary collapse

Constructor Details

#initialize(pattern) ⇒ Pattern

Returns a new instance of Pattern.



8
9
10
11
# File 'lib/humr/splitter/pattern.rb', line 8

def initialize(pattern)
  @pattern = Regexp.new(pattern)
  @pattern_la = Regexp.new("(?=#{pattern})")
end

Instance Method Details

#sub_each_field(line, &block) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 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