{"ScriptPreparationCode":"var a = \u0022FOO BAR\u0022;\r\nvar b = \u0022foo bar\u0022;\r\n\r\nvar options = {\r\n numeric: true\r\n};\r\n\r\nvar collator = new Intl.Collator(\u0027en\u0027, options);\r\n\r\nfunction collatorCompare(valueA, valueB) {\r\n const valueAMissing = valueA == null || valueA == undefined;\r\n const valueBMissing = valueB == null || valueB == undefined;\r\n\r\n if (valueA === valueB) {\r\n return 0\r\n } else if (valueAMissing) {\r\n return -1\r\n } else if (valueBMissing) {\r\n \treturn 1\r\n\t}\r\n\r\n\treturn collator.compare(valueA, valueB)\r\n}\r\n\r\nfunction agGridComparator(valueA, valueB, accentedCompare = false) {\r\n const valueAMissing = valueA == null;\r\n const valueBMissing = valueB == null;\r\n\r\n // this is for aggregations sum and avg, where the result can be a number that is wrapped.\r\n // if we didn\u0027t do this, then the toString() value would be used, which would result in\r\n // the strings getting used instead of the numbers.\r\n if (valueA \u0026\u0026 valueA.toNumber) {\r\n valueA = valueA.toNumber();\r\n }\r\n\r\n if (valueB \u0026\u0026 valueB.toNumber) {\r\n valueB = valueB.toNumber();\r\n }\r\n\r\n if (valueAMissing \u0026\u0026 valueBMissing) {\r\n return 0;\r\n }\r\n\r\n if (valueAMissing) {\r\n return -1;\r\n }\r\n\r\n if (valueBMissing) {\r\n return 1;\r\n }\r\n\r\n function doQuickCompare(a, b) {\r\n return (a \u003E b ? 1 : (a \u003C b ? -1 : 0));\r\n }\r\n\r\n if (typeof valueA !== \u0027string\u0027) {\r\n return doQuickCompare(valueA, valueB);\r\n }\r\n\r\n if (!accentedCompare) {\r\n return doQuickCompare(valueA, valueB);\r\n }\r\n\r\n try {\r\n // using local compare also allows chinese comparisons\r\n return valueA.localeCompare(valueB);\r\n } catch (e) {\r\n // if something wrong with localeCompare, eg not supported\r\n // by browser, then just continue with the quick one\r\n return doQuickCompare(valueA, valueB);\r\n }\r\n}","TestCases":[{"Name":"agGridComparator()","Code":"agGridComparator(a,b) === 0","IsDeferred":false},{"Name":"collatorCompare()","Code":"collatorCompare(a, b) === 0","IsDeferred":false}]}