public RandomizerSettings(RandomizerSettings other) { this.VowelSwaps = other.VowelSwaps; this.ConsonantSwaps = other.ConsonantSwaps; this.LanguageSet = other.LanguageSet; this.MultiLevelSwaps = other.MultiLevelSwaps; }
private void OkButton_Click(object sender, RoutedEventArgs e) { this.Settings = this.Properties.SelectedObject as RandomizerSettings; if (ComponentDispatcher.IsThreadModal) { this.DialogResult = true; } this.Close(); }
private void SettingsButton_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrWhiteSpace(this.Text.Text)) { return; } SettingsWindow _settingsDialog = new SettingsWindow(new RandomizerSettings(this.Settings)); if (true == _settingsDialog.ShowDialog()) { this.Settings = _settingsDialog.Settings; } }
public static string Randomize(string original, RandomizerSettings settings) { if (string.IsNullOrWhiteSpace(original)) { return original; } if (settings.ConsonantSwaps == 0 && settings.VowelSwaps == 0) { return original; } Dictionary<char, char> _consonantSwapMap = null; Dictionary<char, char> _vowelSwapMap = null; if (settings.ConsonantSwaps > 0) { IEnumerable<char> _langConsonants = settings.LanguageSet.Consonants; // get distinct consonants HashSet<char> _textConsonants = new HashSet<char>(original.ToLowerInvariant().Where(_c => _langConsonants.Contains(_c)).Distinct()); // max swaps = min of user defined swaps, consonant pairs in language set, actual number of consonants in text int _maxSwaps = Math.Min(settings.ConsonantSwaps, _langConsonants.Count() / 2); _maxSwaps = Math.Min(_maxSwaps, _textConsonants.Count); _consonantSwapMap = Randomizer.BuildSwapMap(_textConsonants, _langConsonants, _maxSwaps, settings.MultiLevelSwaps); } if (settings.VowelSwaps > 0) { IEnumerable<char> _langVowels = settings.LanguageSet.Vowels; HashSet<char> _textVowels = new HashSet<char>(original.ToLowerInvariant().Where(_c => _langVowels.Contains(_c)).Distinct()); int _maxSwaps = Math.Min(settings.VowelSwaps, _langVowels.Count() / 2); _maxSwaps = Math.Min(_maxSwaps, _textVowels.Count); _vowelSwapMap = Randomizer.BuildSwapMap(_textVowels, _langVowels, _maxSwaps, settings.MultiLevelSwaps); } string _result = Randomizer.Swap(original, _consonantSwapMap, _vowelSwapMap); return _result; }
public SettingsWindow(RandomizerSettings settings) { this.InitializeComponent(); this.Properties.SelectedObject = settings; }