private async Task DetectFileStyleAsync(string content, CancellationToken cancelToken) { await Task.Run(() => { foreach (EditorStyles style in Enum.GetValues(typeof(EditorStyles))) { if (style == EditorStyles.Custom) { continue; } var levenshtein = GetLevenshteinAfterFormat(content, style, FormatOptionsProvider.GetDefaultOptionsForStyle(style)); lock (defaultLock) { if (detectedPredefinedStyles.ContainsKey(style)) { detectedPredefinedStyles[style] += levenshtein; } else { detectedPredefinedStyles.Add(style, levenshtein); } } } }, cancelToken); }
private async Task DetectFileOptionsAsync(string content, EditorStyles style, CancellationToken cancelToken) { await Task.Run(() => { var formatOptions = FormatOptionsProvider.GetDefaultOptionsForStyle(style); foreach (var option in formatOptions) { if (cancelToken.IsCancellationRequested) { break; } SetFormatOption(option, content, style, formatOptions); } allFoundOptions.Add(formatOptions); }, cancelToken); }
private List <IFormatOption> AggregateOptions() { var defaultOptions = FormatOptionsProvider.GetDefaultOptionsForStyle(detectedStyle); for (int i = 0; i < defaultOptions.Count; i++) { var toggleChanged = (0, ToggleValues.False); var inputChanged = new Dictionary <string, int>(); var multipleToggleChanged = false; foreach (var option in allFoundOptions) { switch (option[i]) { case FormatOptionToggleModel foundToggleModel: var defaultToggle = (FormatOptionToggleModel)defaultOptions[i]; if (foundToggleModel.BooleanCombobox != defaultToggle.BooleanCombobox) { toggleChanged.Item1++; toggleChanged.Item2 = foundToggleModel.BooleanCombobox; } break; case FormatOptionInputModel foundInputModel: var defaultInput = (FormatOptionInputModel)defaultOptions[i]; if (foundInputModel.Input != defaultInput.Input) { if (inputChanged.ContainsKey(foundInputModel.Input)) { inputChanged[foundInputModel.Input]++; } else { inputChanged.Add(foundInputModel.Input, 1); } } break; case FormatOptionMultipleToggleModel foundMultipleToggleModel: if (multipleToggleChanged) { break; } var defaultToggleFlags = ((FormatOptionMultipleToggleModel)defaultOptions[i]).ToggleFlags; var toggleflags = foundMultipleToggleModel.ToggleFlags; for (int j = 0; j < defaultToggleFlags.Count; j++) { if (toggleflags[j].Value != defaultToggleFlags[j].Value) { multipleToggleChanged = true; foundMultipleToggleModel.IsModifed = true; defaultOptions[i] = foundMultipleToggleModel; break; } } break; default: break; } } if (toggleChanged.Item1 > 0) { var optionToggle = (FormatOptionToggleModel)defaultOptions[i]; optionToggle.BooleanCombobox = toggleChanged.Item2; optionToggle.IsModifed = true; continue; } if (inputChanged.Count > 0) { var input = inputChanged.OrderBy(e => e.Value).Last(); var inputToogle = (FormatOptionInputModel)defaultOptions[i]; inputToogle.Input = input.Key; inputToogle.IsModifed = true; } } return(defaultOptions); }