示例#1
0
        public static bool ParseContextElement(Element element, ExpressionTerm expressionPart)
        {
            if (expressionPart.IsValidFunctionByName(".TargetElementName") == true)
            {
                element.TargetElementName = expressionPart.Value;
                return(true);
            }
            else if (expressionPart.IsValidFunctionByName("TargetElementText") == true)
            {
                element.TargetElementText = expressionPart.Value;
                element.TextFunction      = expressionPart.FunctionArgument;
                element.Equal             = expressionPart.ExpressionBooleanCondition;
                return(true);
            }
            else if (expressionPart.IsValidFunctionByRegex("Attribute(.*)\\.Text") == true)
            {
                element.Attributes.Add(new Model.Attribute(expressionPart.FunctionArgument)
                {
                    Text = expressionPart.Value, ExactMatch = true
                });
                return(true);
            }
            else if (expressionPart.IsValidFunctionByRegex("Attribute(.*)\\.Contains") == true)
            {
                element.Attributes.Add(new Model.Attribute(expressionPart.FunctionArgument)
                {
                    Text = expressionPart.Value, Equal = expressionPart.ExpressionBooleanCondition
                });
                return(true);
            }

            return(false);
        }
示例#2
0
        public static bool ParsePosition(Element element, ExpressionTerm expressionPart)
        {
            if (expressionPart.IsValidFunctionByName(".Position") == true)
            {
                element.Position = Int32.Parse(expressionPart.Value);
                return(true);
            }

            return(false);
        }
示例#3
0
        public static bool ParseParent(Element element, ExpressionTerm expressionPart)
        {
            if (expressionPart.IsValidFunctionByName("Parent.Name") == true)
            {
                EnsureParent(element);
                element.Parent.Name = expressionPart.Value;
                return(true);
            }
            else if (expressionPart.IsValidFunctionByName("Parent.Text") == true)
            {
                EnsureParent(element);
                element.Parent.Text              = expressionPart.Value;
                element.Parent.TextFunction      = expressionPart.FunctionArgument;
                element.Parent.TextContainsEqual = expressionPart.ExpressionBooleanCondition;
                return(true);
            }
            else if (expressionPart.IsValidFunctionByRegex("Parent.Attribute(.*)\\.Contains") == true)
            {
                EnsureParent(element);
                element.Parent.Attributes.Add(new Model.Attribute(expressionPart.FunctionArgument)
                {
                    Text = expressionPart.Value, Equal = expressionPart.ExpressionBooleanCondition
                });
                return(true);
            }
            else if (expressionPart.IsValidFunctionByRegex("Parent.Attribute(.*)\\.Text") == true)
            {
                EnsureParent(element);
                element.Parent.Attributes.Add(new Model.Attribute(expressionPart.FunctionArgument)
                {
                    Text = expressionPart.Value, ExactMatch = true
                });
                return(true);
            }
            else if (expressionPart.IsValidFunctionByName("Parent.Position") == true)
            {
                element.Parent.Position = Int32.Parse(expressionPart.Value);
                return(true);
            }

            return(false);
        }
示例#4
0
        public static bool ParseSiblings(Element element, ExpressionTerm expressionPart)
        {
            if (expressionPart.IsValidFunctionByName(".FollowingSibling.Name") == true)
            {
                element.Siblings.Add(new Sibling()
                {
                    Name = expressionPart.Value
                });
                return(true);
            }
            else if (expressionPart.IsValidFunctionByName(".PrecedingSibling.Name") == true)
            {
                element.Siblings.Add(new Sibling()
                {
                    Name = expressionPart.Value, Preceding = true
                });
                return(true);
            }

            return(false);
        }
示例#5
0
        public static bool ParseRelatives(Element element, ExpressionTerm expressionPart)
        {
            if (expressionPart.IsValidFunctionByName(".Descendant") == true)
            {
                element.Relatives.Add(new Relative()
                {
                    Descendant = true, Name = expressionPart.Value
                });
                return(true);
            }

            if (expressionPart.IsValidFunctionByName(".Ancestor") == true)
            {
                element.Relatives.Add(new Relative()
                {
                    Descendant = false, Name = expressionPart.Value
                });
                return(true);
            }

            return(false);
        }