public override string Apply(string fieldText, IScrubfuTagOptions commandOptions = null) { if (fieldText.Length < 1) { return(fieldText); } var options = (commandOptions ?? Options) as MaskTagOptions; if (options == null) { throw new NoOptionsSuppliedException(nameof(options)); } var inQuotes = fieldText.IsWrappedByString("'"); if (inQuotes) { fieldText = fieldText.Substring(1, fieldText.Length - 2); } var offsetStart = options.MaskStartOffset; var offsetEnd = options.MaskEndOffset; var maskCharTotal = CalculateMaskCharTotal(fieldText.Length, offsetStart, offsetEnd); if (ShouldMaskFullText(fieldText.Length, offsetStart, maskCharTotal)) { offsetStart = 0; maskCharTotal = fieldText.Length; } var textToMask = fieldText.Substring(offsetStart, maskCharTotal); if (string.IsNullOrEmpty(textToMask)) { return(inQuotes ? fieldText.WrapWithString("'") : fieldText); } var sb = new StringBuilder(); sb.Append(fieldText.Substring(0, offsetStart)); var regExPatternSB = new StringBuilder().Append("("); foreach (var ignoreString in options.IgnoreStrings) { regExPatternSB.Append(string.Concat(Regex.Escape(ignoreString), "|")); } regExPatternSB.Append(".)"); sb.Append(Regex.Replace(textToMask, regExPatternSB.ToString(), delegate(Match match) { return(options.IgnoreStrings.Contains(match.Value) ? match.Value : options.MaskChar.ToString()); })); sb.Append(fieldText.Substring(textToMask.Length + offsetStart)); return(inQuotes ? sb.ToString().WrapWithString("'") : sb.ToString()); }
public override string Apply(string fieldText, IScrubfuTagOptions commandOptions = null) { if (fieldText.Length < 1) { return(fieldText); } var options = (commandOptions ?? Options) as RandomTagOptions; if (options == null) { throw new NoOptionsSuppliedException(nameof(options)); } var isInQuotes = fieldText.IsWrappedByString(Constants.SINGLE_QUOTE); var offsetStart = isInQuotes ? 1 : 0; var offsetEnd = isInQuotes ? 1 : 0; var textToRandomize = fieldText.Substring(offsetStart, fieldText.Length - (offsetStart + offsetEnd)); var sb = new StringBuilder(); foreach (var character in textToRandomize) { sb.Append(GetRandomCharacter(character)); } return(isInQuotes ? sb.ToString().WrapWithString(Constants.SINGLE_QUOTE) : sb.ToString()); }
public override string Apply(string fieldText, IScrubfuTagOptions commandOptions = null) { if (fieldText.Length == 0) { return(fieldText); } var options = (commandOptions ?? Options) as ReplaceTagOptions; if (options == null) { throw new NoOptionsSuppliedException(nameof(options)); } var isInQuotes = fieldText.IsWrappedByString(Constants.SINGLE_QUOTE); var offsetStart = isInQuotes ? 1 : 0; var offsetEnd = isInQuotes ? 1 : 0; var textToReplace = fieldText.Substring(offsetStart, fieldText.Length - (offsetStart + offsetEnd)); if (string.IsNullOrEmpty(textToReplace)) { return(fieldText); } foreach (var replacement in options.Replacements) { textToReplace = Regex.Replace(textToReplace, replacement.Key, replacement.Value, RegexOptions.None); } if (isInQuotes) { return(textToReplace.WrapWithString(Constants.SINGLE_QUOTE)); } return(textToReplace); }
public virtual string Apply(string fieldText, IScrubfuTagOptions commandOptions = null) { throw new NotImplementedException(); }