1var Marker = require('../tokenizer/marker');
2
3function split(value, separator) {
4  var openLevel = Marker.OPEN_ROUND_BRACKET;
5  var closeLevel = Marker.CLOSE_ROUND_BRACKET;
6  var level = 0;
7  var cursor = 0;
8  var lastStart = 0;
9  var lastValue;
10  var lastCharacter;
11  var len = value.length;
12  var parts = [];
13
14  if (value.indexOf(separator) == -1) {
15    return [value];
16  }
17
18  if (value.indexOf(openLevel) == -1) {
19    return value.split(separator);
20  }
21
22  while (cursor < len) {
23    if (value[cursor] == openLevel) {
24      level++;
25    } else if (value[cursor] == closeLevel) {
26      level--;
27    }
28
29    if (level === 0 && cursor > 0 && cursor + 1 < len && value[cursor] == separator) {
30      parts.push(value.substring(lastStart, cursor));
31      lastStart = cursor + 1;
32    }
33
34    cursor++;
35  }
36
37  if (lastStart < cursor + 1) {
38    lastValue = value.substring(lastStart);
39    lastCharacter = lastValue[lastValue.length - 1];
40    if (lastCharacter == separator) {
41      lastValue = lastValue.substring(0, lastValue.length - 1);
42    }
43
44    parts.push(lastValue);
45  }
46
47  return parts;
48}
49
50module.exports = split;
51