示例#1
0
 public DataPair ApplyRule(DataPair input)
 {
     if (input.Type.IsNumericType())
     {
         if (RuleHelper.IsValid(Regex, Convert.ToDouble(input.Data)))
         {
             var output = new DataPair
             {
                 Data              = SubstitutionNumber.ToString(),
                 Type              = typeof(double),
                 IsTransformed     = true,
                 TransformationLog = $"{input.TransformationLog}Numbersub (matched { Regex }). {input.Data} => { SubstitutionNumber.ToString()}\n"
             };
             return(output);
         }
     }
     return(input);
 }
示例#2
0
 public DataPair ApplyRule(DataPair input)
 {
     if (input.Type.IsNumericType())
     {
         if (RuleHelper.IsValid(Regex, Convert.ToDouble(input.Data)))
         {
             var output = new DataPair
             {
                 Data          = input.Data.Replace(SubstitutionDigit.ToString(), Substitute.ToString()),
                 Type          = typeof(double),
                 IsTransformed = true
             };
             output.TransformationLog = $"{input.TransformationLog}Digitsub (matched { Regex }). {input.Data} => { output.Data.ToString()}\n";
             return(output);
         }
     }
     return(input);
 }
示例#3
0
        public DataPair ApplyRule(DataPair input)
        {
            if (input.Type.IsNumericType())
            {
                if (RuleHelper.IsValid(Regex, Convert.ToDouble(input.Data)))
                {
                    string explicitFunction  = Function.Replace("$x", input.Data);
                    string evaluatedFunction = RuleHelper.EvaluateExpression(explicitFunction);
                    double newValue          = RuleHelper.EvaluateDouble(evaluatedFunction);

                    var output = new DataPair
                    {
                        Data              = newValue.ToString(),
                        Type              = typeof(double),
                        IsTransformed     = true,
                        TransformationLog = $"{input.TransformationLog}Numbercalculation (matched { Regex }). {input.Data} => { newValue.ToString()}\n"
                    };
                    return(output);
                }
            }
            return(input);
        }
示例#4
0
        static void Main(string[] args)
        {
            List <IRule>         rules    = new List <IRule>();
            WordSubstitutionRule ödipussy = new WordSubstitutionRule
            {
                Regex           = "$x%7=0 and not ($x=21)",
                SubstituionWord = "Ödipussy"
            };
            DigitSubstitutionRule newRule = new DigitSubstitutionRule
            {
                Regex             = "contains($x,3)",
                Substitute        = 6,
                SubstitutionDigit = 3
            };

            rules.Add(ödipussy);
            rules.Add(newRule);

            for (int i = 1; i <= 21; i++)
            {
                DataPair output = new DataPair
                {
                    Data = i.ToString(),
                    Type = typeof(double)
                };
                foreach (var rule in rules)
                {
                    output = rule.ApplyRule(output);
                }
                if (output.IsTransformed)
                {
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine(output.TransformationLog);
                    Console.ForegroundColor = ConsoleColor.White;
                }
                Console.WriteLine(i + " => " + output.Data);
            }
        }