{"ScriptPreparationCode":"var fnSelectorStr = \u0022functionsomethingreturnsomething.foo[\u0027bar\u0027][\u0027barz\u0027].bar_again[\u0027foo_again\u0027][\u0027barz-again\u0027][\u0027idk\u0027]\u0022;\r\n\r\nvar RE_MATCH = /(?:(?\u003C=\\[)([\u0027\u0022]).*?\\1)|(?:(?\u003C=\\.)[^.[]\u002B)/g;\r\nvar RE_EXEC = /(?:(?\u003C=\\[)([\u0027\u0022])(.*?)\\1)|(?:(?\u003C=\\.)[^.[]\u002B)/g;","TestCases":[{"Name":"exec","Code":"var matches = RE_EXEC.exec(fnSelectorStr);\r\nvar members = [];\r\ndo {\r\n var propFound = matches[2] === undefined ? matches[0] : matches[2];\r\n members.push(propFound);\r\n} while ((matches = RE_EXEC.exec(fnSelectorStr)) !== null);\r\nconsole.log(members);","IsDeferred":false},{"Name":"match \u002B map \u002B N x match","Code":"var matches = fnSelectorStr.match(RE_MATCH);\r\nif (matches) {\r\n var RE_HAS_QUOTES = /^([\u0027\u0022]).*\\1$/;\r\n return matches.map(function(match){\r\n return match.match(RE_HAS_QUOTES) ? match.slice(1, -1) : match;\r\n });\r\n}","IsDeferred":false}]}