Class: Humr::Splitter::Default

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

Instance Method Summary collapse

Instance Method Details

#sub_each_field(line, &block) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/humr/splitter/default.rb', line 8

def sub_each_field(line, &block)
  scanner = StringScanner.new(line)

  result = ''
  index = 1

  loop do
    if s = scanner.scan(/".*?"|\[.*?\]/)
      result << s[0]
      result << yield(s[1..-2], index)
      result << s[-1]
      index += 1
    elsif s = scanner.scan(/\S+/)
      result << yield(s, index)
      index += 1
    elsif not scanner.eos?
      result << scanner.scan(/\s*/)
    else
      break
    end
  end

  result
end