public void Execute(object parameter) { IRegexRulePart regexRulePart = RegexRulePart.Create(ruleEditorViewModel.SelectedRuleType); ruleEditorViewModel.SelectedRegexRulePart = regexRulePart; ruleEditorViewModel.StagingRule.RegexRuleParts.Add(regexRulePart); ruleEditorViewModel.GenerateCompliantExampleCommand.Execute(null); }
public void Execute(object parameter) { IRegexRulePart regexRulePart = ruleEditorViewModel.SelectedRegexRulePart; int index = ruleEditorViewModel.StagingRule.RegexRuleParts.IndexOf(regexRulePart); ruleEditorViewModel.StagingRule.RegexRuleParts.RemoveAt(index); ruleEditorViewModel.StagingRule.RegexRuleParts.Insert(index - 1, regexRulePart); ruleEditorViewModel.SelectedRegexRulePart = ruleEditorViewModel.StagingRule.RegexRuleParts[index - 1]; ruleEditorViewModel.GenerateCompliantExampleCommand.Execute(null); }
public bool CanExecute(object parameter) { if (ruleEditorViewModel.SelectedRegexRulePart == null) { return(false); } IRegexRulePart regexRulePart = ruleEditorViewModel.SelectedRegexRulePart; int index = ruleEditorViewModel.StagingRule.RegexRuleParts.IndexOf(regexRulePart); return(index > 0); }
public OptionSetEditorView(IRegexRulePart regexRulePart) { InitializeComponent(); OptionSetEditorViewModel = new OptionSetEditorViewModel(regexRulePart); RegexRulePart = regexRulePart; DataContext = OptionSetEditorViewModel; PreviewKeyDown += (s, e) => { if (e.Key == Key.Escape) { Close(); } }; }
private static string GetRegexPartFromRuleType(IRegexRulePart regexRulePart) { string regexPartOutput = ""; string optionalModifierStart = regexRulePart.IsOptional ? @"(" : ""; string optionalModifierEnd = regexRulePart.IsOptional ? @")?" : ""; string caseSensitiveModifierStart = regexRulePart.IsCaseSensitive ? @"(?-i)" : @"(?i)"; string caseSensitiveModifierEnd = regexRulePart.IsCaseSensitive ? @"(?i)" : @"(?-i)"; switch (regexRulePart.RuleType) { case AnyLetter: switch (regexRulePart.CaseSensitivityMode) { case CaseSensitivity.UpperCase: regexPartOutput += @"[A-Z]"; break; case CaseSensitivity.AnyCase: regexPartOutput += @"[A-Za-z]"; break; case CaseSensitivity.LowerCase: regexPartOutput += @"[a-z]"; break; case CaseSensitivity.None: break; default: throw new ArgumentOutOfRangeException(); } break; case AnyAlphanumeric: switch (regexRulePart.CaseSensitivityMode) { case CaseSensitivity.UpperCase: regexPartOutput += "[A-Z0-9]"; break; case CaseSensitivity.AnyCase: regexPartOutput += "[A-Za-z0-9]"; break; case CaseSensitivity.LowerCase: regexPartOutput += "[a-z0-9]"; break; case CaseSensitivity.None: break; default: throw new ArgumentOutOfRangeException(); } break; case AnyDigit: regexPartOutput += @"\d"; break; case CustomText: regexPartOutput += caseSensitiveModifierStart + SanitizeWord(regexRulePart.RawUserInputValue) + caseSensitiveModifierEnd; break; case OptionSet: List <string> options = regexRulePart.Options .Select(x => SanitizeWord(x.OptionValue)) .Where(x => !string.IsNullOrWhiteSpace(x)) .ToList(); if (options.Count < 1) { break; } regexPartOutput = caseSensitiveModifierStart + $"({string.Join(@"|", options)})" + caseSensitiveModifierEnd; break; case FullStop: regexPartOutput = SanitizeCharacter(@"."); break; case Hyphen: regexPartOutput = SanitizeCharacter(@"-"); break; case Underscore: regexPartOutput = SanitizeCharacter(@"_"); break; case OpenParenthesis: regexPartOutput = SanitizeCharacter(@"("); break; case CloseParenthesis: regexPartOutput = SanitizeCharacter(@")"); break; default: throw new ArgumentOutOfRangeException(); } return(optionalModifierStart + regexPartOutput + optionalModifierEnd); }