{"ScriptPreparationCode":"var xpath = \u0022/config/profile/gpon/line-profile[name = //config/gpon[id = \\\u00221/1\\\u0022]/onu-auto-provisioning/service-port[id = \\\u00221\\\u0022]/gem/gem-id/../../../line-profile]/gem/gem-id\u0022\r\n\r\nvar getPredicatesIndexRange = function(xpath) {\r\n return [[{\u0022start\u0022:54,\u0022end\u0022:66},{\u0022start\u0022:101,\u0022end\u0022:111},{\u0022start\u0022:33,\u0022end\u0022:145}]];\r\n}\r\n\r\nvar getPredicatesInfoOld = function(xpath) {\r\n var predicates = [];\r\n var predicatesIndexRange = getPredicatesIndexRange(xpath);\r\n var index = 0;\r\n\r\n if (predicatesIndexRange !== 0) {\r\n _.each(predicatesIndexRange, function(predicateIndexes) {\r\n var predicateInfo = [];\r\n _.each(predicateIndexes, function(range) {\r\n var predicate = xpath.substring(range.start, range.end);\r\n var processedPredicate = predicate;\r\n\r\n _.each(predicateInfo, function(previousPredicate) {\r\n processedPredicate = processedPredicate.replace(previousPredicate.predicate, previousPredicate.key);\r\n });\r\n\r\n predicateInfo.push({\r\n key: \u0022[predicate\u0022 \u002B index \u002B \u0022]\u0022,\r\n predicate: predicate,\r\n processedPredicate: processedPredicate\r\n });\r\n index\u002B\u002B;\r\n });\r\n\r\n predicates.push(predicateInfo);\r\n });\r\n }\r\n\r\n return predicates;\r\n};\r\n\r\nvar getPredicatesInfo = function(xpath) {\r\n var predicatesIndexRange = getPredicatesIndexRange(xpath);\r\n \r\n return _.map(predicatesIndexRange, function(predicateIndexes) {\r\n var predicatesInfo = _.reduce(predicateIndexes, function(predicates, range, index) {\r\n var predicate = xpath.substring(range.start, range.end);\r\n var processedPredicate = predicate;\r\n\r\n _.each(predicates, function(previousPredicate) {\r\n processedPredicate = processedPredicate.replace(previousPredicate.predicate, previousPredicate.key);\r\n });\r\n\r\n predicates.push({\r\n key: \u0022[predicate\u0022 \u002B index \u002B \u0022]\u0022,\r\n predicate: predicate,\r\n processedPredicate: processedPredicate\r\n });\r\n\r\n return predicates;\r\n\r\n }, []);\r\n\r\n return predicatesInfo;\r\n });\r\n};\r\n","TestCases":[{"Name":"reduce","Code":"getPredicatesInfo(xpath)","IsDeferred":false},{"Name":"old","Code":"getPredicatesInfoOld(xpath)","IsDeferred":false}]}