funcunit
Version:
<!-- @hide title
36 lines (28 loc) • 781 B
JavaScript
var Splitter = function Splitter (separator) {
this.separator = separator;
};
Splitter.prototype.split = function (value) {
if (value.indexOf(this.separator) === -1)
return [value];
if (value.indexOf('(') === -1)
return value.split(this.separator);
var level = 0;
var cursor = 0;
var lastStart = 0;
var len = value.length;
var tokens = [];
while (cursor++ < len) {
if (value[cursor] == '(') {
level++;
} else if (value[cursor] == ')') {
level--;
} else if (value[cursor] == this.separator && level === 0) {
tokens.push(value.substring(lastStart, cursor));
lastStart = cursor + 1;
}
}
if (lastStart < cursor + 1)
tokens.push(value.substring(lastStart));
return tokens;
};
module.exports = Splitter;