예제 #1
0
        public string CreateConditionalPatchScript <TDocument>(PropertyUpdateDescriptor[] propertyUpdates, Expression <Func <TDocument, bool> > condition, ScriptParameterDictionary parameters)
        {
            var scriptCondition = _patchScriptConditionBuilder.CreateScriptCondition(condition, parameters);
            var scriptBody      = _patchScriptBodyBuilder.CreateScriptBody(propertyUpdates, parameters);

            return(string.Join(
                       "\n",
                       $"if ({scriptCondition}) {{",
                       scriptBody,
                       "}"));
        }
예제 #2
0
        private static void PrintCondition(Expression <Func <TestDocument, bool> > expression)
        {
            var originalColor = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Magenta;

            Console.WriteLine("***********************************************************************************");
            Console.WriteLine("C# Expression:");
            Console.Write("\t");
            Console.WriteLine(expression.ToString());
            Console.WriteLine();

            var parameters = new ScriptParameterDictionary();
            var script     = patchScriptConditionBuilder.CreateScriptCondition(expression, parameters);

            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine("Created JavaScript expression:");
            Console.Write("\t");
            Console.WriteLine(script);
            Console.WriteLine();

            Console.ForegroundColor = ConsoleColor.DarkCyan;
            Console.WriteLine("Parameters:");
            foreach (var parameter in parameters)
            {
                Console.Write("\t");

                string value;
                if (parameter.Value is string || parameter.Value is char)
                {
                    value = '"' + parameter.Value.ToString().Replace("\"", "\\\"") + '"';
                }
                else if (parameter.Value == null)
                {
                    value = "null";
                }
                else
                {
                    value = parameter.Value.ToString();
                }

                Console.WriteLine($"{parameter.Key}: {value}");
            }
            Console.WriteLine();

            Console.ForegroundColor = originalColor;
            Console.WriteLine();
        }