Example #1
0
 public ComboInterface(object parent)
 {
     InitializeComponent();
     _parent = (DefaultCondition)parent;
 }
        /// <summary>
        /// Gets the condition.
        /// </summary>
        /// <param name="conditionElement">The condition element.</param>
        /// <param name="matchAll">if set to <see langword="true"/> [match all].</param>
        /// <returns></returns>
        private ICondition GetCondition(XmlNode conditionElement, LogicalGrouping logicalGrouping)
        {
            string    input      = "-";
            MatchType matchType  = MatchType.Pattern; // from schema definition
            string    pattern    = "(.*)";
            bool      ignoreCase = true;              // from schema definition
            bool      negate     = false;             // from schema definition

            if (conditionElement.Attributes["input"] != null)
            {
                input = conditionElement.Attributes["input"].Value;
            }

            if (conditionElement.Attributes["matchType"] != null)
            {
                try { matchType = (MatchType)Enum.Parse(typeof(MatchType), conditionElement.Attributes["matchType"].Value, true); }
                catch (Exception exc) { Manager.Log("Condition: " + exc.Message, "Error"); }
            }

            if (conditionElement.Attributes["pattern"] != null)
            {
                pattern = conditionElement.Attributes["pattern"].Value;
            }

            if (conditionElement.Attributes["ignoreCase"] != null)
            {
                ignoreCase = XmlConvert.ToBoolean(conditionElement.Attributes["ignoreCase"].Value);
            }

            if (conditionElement.Attributes["negate"] != null)
            {
                negate = XmlConvert.ToBoolean(conditionElement.Attributes["negate"].Value);
            }

            RegexOptions            conditionOptions = Manager.RuleOptions;
            IConditionFlagProcessor conditionFlags   = new ConditionFlagProcessor();

            if (ignoreCase)
            {
                conditionFlags.Add(new CF.NoCaseFlag());
                conditionOptions |= RegexOptions.IgnoreCase;
            }

            if (logicalGrouping == LogicalGrouping.MatchAny)
            {
                conditionFlags.Add(new CF.OrNextFlag());
            }

            ICondition condition = null;

            // create the condition
            switch (matchType)
            {
            case MatchType.IsFile: condition = new IsFileCondition(); break;

            case MatchType.IsDirectory: condition = new IsDirectoryCondition(); break;

            case MatchType.Pattern: condition = new DefaultCondition(); break;
            }

            Pattern compiledPattern = new Pattern(pattern, negate, conditionOptions);
            var     conditionTest   = new DefaultConditionTestValue(input);

            // initialize condition
            condition.Init(compiledPattern, conditionTest, conditionFlags);

            return(condition);
        }
Example #3
0
        public void Test_GetPredicate()
        {
            var criteria = new DefaultCondition <AggregateRootSample>(t => t.Name == "a");

            Assert.Equal("t => (t.Name == \"a\")", criteria.GetCondition().ToString());
        }