private static void FirstPass(VersionHandler handler, string userAgent, int[] maxCharacters, List <DeviceResult> initialResults) { string compare, target; foreach (var devices in handler.UserAgents) { foreach (DeviceInfo device in devices) { SegmentScore[] scores = new SegmentScore[handler.VersionRegexes.Length]; for (int segment = 0; segment < handler.VersionRegexes.Length; segment++) { target = handler.VersionRegexes[segment].Match(userAgent).Value; compare = handler.VersionRegexes[segment].Match(device.UserAgent).Value; for (int i = 0; i < target.Length && i < compare.Length; i++) { scores[segment].Difference += Math.Abs((target[i] - compare[i])); scores[segment].CharactersMatched++; } if (scores[segment].CharactersMatched > maxCharacters[segment]) { maxCharacters[segment] = scores[segment].CharactersMatched; } } initialResults.Add(new DeviceResult(scores, device)); } } }
private static void FirstPass(VersionHandler handler, string userAgent, int[] maxCharacters, List<DeviceResult> initialResults) { string compare, target; foreach (var devices in handler.UserAgents) { foreach (DeviceInfo device in devices) { SegmentScore[] scores = new SegmentScore[handler.VersionRegexes.Length]; for (int segment = 0; segment < handler.VersionRegexes.Length; segment++) { target = handler.VersionRegexes[segment].Match(userAgent).Value; compare = handler.VersionRegexes[segment].Match(device.UserAgent).Value; for (int i = 0; i < target.Length && i < compare.Length; i++) { scores[segment].Difference += Math.Abs((target[i] - compare[i])); scores[segment].CharactersMatched++; } if (scores[segment].CharactersMatched > maxCharacters[segment]) maxCharacters[segment] = scores[segment].CharactersMatched; } initialResults.Add(new DeviceResult(scores, device)); } } }
internal DeviceResult(SegmentScore[] scores, DeviceInfo device) { Scores = scores; Device = device; }