Browse Source

Make splitValues work with nested parenthesis

pull/2675/head
Artur Arseniev 6 years ago
parent
commit
aeb98b28d5
  1. 26
      src/style_manager/model/Property.js

26
src/style_manager/model/Property.js

@ -145,8 +145,30 @@ const Property = Backbone.Model.extend(
* @param {String} [separator] Separator
*/
splitValues(values, separator = ',') {
const sep = new RegExp(`${separator}(?![^\\(]*\\))`);
return (values || '').split(sep).map(i => i.trim());
const res = [];
const op = '(';
const cl = ')';
let curr = '';
let acc = 0;
(values || '').split('').forEach(str => {
if (str == op) {
acc++;
curr = curr + op;
} else if (str == cl && acc > 0) {
acc--;
curr = curr + cl;
} else if (str === separator && acc == 0) {
res.push(curr);
curr = '';
} else {
curr = curr + str;
}
});
curr !== '' && res.push(curr);
return res.map(i => i.trim());
},
/**

Loading…
Cancel
Save