| var Marker = require('../tokenizer/marker'); | 
|   | 
| function split(value, separator) { | 
|   var openLevel = Marker.OPEN_ROUND_BRACKET; | 
|   var closeLevel = Marker.CLOSE_ROUND_BRACKET; | 
|   var level = 0; | 
|   var cursor = 0; | 
|   var lastStart = 0; | 
|   var lastValue; | 
|   var lastCharacter; | 
|   var len = value.length; | 
|   var parts = []; | 
|   | 
|   if (value.indexOf(separator) == -1) { | 
|     return [value]; | 
|   } | 
|   | 
|   if (value.indexOf(openLevel) == -1) { | 
|     return value.split(separator); | 
|   } | 
|   | 
|   while (cursor < len) { | 
|     if (value[cursor] == openLevel) { | 
|       level++; | 
|     } else if (value[cursor] == closeLevel) { | 
|       level--; | 
|     } | 
|   | 
|     if (level === 0 && cursor > 0 && cursor + 1 < len && value[cursor] == separator) { | 
|       parts.push(value.substring(lastStart, cursor)); | 
|       lastStart = cursor + 1; | 
|     } | 
|   | 
|     cursor++; | 
|   } | 
|   | 
|   if (lastStart < cursor + 1) { | 
|     lastValue = value.substring(lastStart); | 
|     lastCharacter = lastValue[lastValue.length - 1]; | 
|     if (lastCharacter == separator) { | 
|       lastValue = lastValue.substring(0, lastValue.length - 1); | 
|     } | 
|   | 
|     parts.push(lastValue); | 
|   } | 
|   | 
|   return parts; | 
| } | 
|   | 
| module.exports = split; |