From aeb98b28d5f2f9e02907f26d0dc95e87b18de4f6 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sun, 15 Mar 2020 03:01:18 +0100 Subject: [PATCH] Make splitValues work with nested parenthesis --- src/style_manager/model/Property.js | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/style_manager/model/Property.js b/src/style_manager/model/Property.js index 89c2285f1..ec895cd61 100644 --- a/src/style_manager/model/Property.js +++ b/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()); }, /**