Module: Gly::StringHelpers

Extended by:
StringHelpers
Included in:
StringHelpers
Defined in:
lib/gly/string_helpers.rb

Instance Method Summary collapse

Instance Method Details

#bracket_aware_whitespace_split(str) ⇒ Object Also known as: music_split

splits string by whitespace that is not enclosed in brackets. At the same time removes brackets.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/gly/string_helpers.rb', line 8

def bracket_aware_whitespace_split(str)
  str = str.strip
  chunk_start = 0
  chunks = []
  in_brackets = false
  str.chars.each_with_index do |char, chi|
    if in_brackets
      if char == ')'
        in_brackets = false
        chunks << str[chunk_start .. chi-1]
        chunk_start = chi + 1
      end
    else
      if char == '('
        in_brackets = true
        chunk_start = chi + 1
      elsif char =~ /^\s$/
        if chunk_start != chi
          chunks << str[chunk_start .. chi-1]
        end
        chunk_start = chi+1
      end
    end
  end

  if chunk_start < str.size
    chunks << str[chunk_start .. -1]
  end

  chunks
end