Beispiel #1
0
        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);
        }
Beispiel #4
0
 public virtual string Apply(string fieldText, IScrubfuTagOptions commandOptions = null)
 {
     throw new NotImplementedException();
 }