示例#1
0
 internal override bool OneLine()
 {
     if (FromClause == null &&
         WhereClause == null &&
         OrderByClause == null &&
         GroupByClause == null)
     {
         return(SelectElements.All(sel => sel.OneLine()));
     }
     return(false);
 }
示例#2
0
 public override SqlNode Clone()
 {
     return(new SelectStatement()
     {
         Distinct = Distinct,
         FromClause = FromClause?.Clone() as FromClause,
         GroupByClause = GroupByClause?.Clone() as GroupByClause,
         HavingClause = HavingClause?.Clone() as HavingClause,
         OffsetLimitClause = OffsetLimitClause?.Clone() as OffsetLimitClause,
         OrderByClause = OrderByClause?.Clone() as OrderByClause,
         SelectElements = SelectElements?.Select(x => x.Clone() as SelectExpression).ToList(),
         WhereClause = WhereClause?.Clone() as WhereClause
     });
 }
示例#3
0
        public override void EnterSelectElements([NotNull] MySqlParser.SelectElementsContext context)
        {
            if (_tmpDepth == _depth)
            {
                SelectElements selectElements = new SelectElements(context.SourceInterval, context, Environment.NewLine + "SELECT-----" + context.GetText() + "----SELECT" + Environment.NewLine);
                if (AllRules[AllRules.Count - 1].RuleType == "selectelements")
                {
                    AllRules.Remove(AllRules[AllRules.Count - 1]);
                }

                AllRules.Add(selectElements);
                _isOtherListener = true;
            }
        }
示例#4
0
 public override bool Equals(object obj)
 {
     if (obj is SelectStatement other)
     {
         return(Equals(Distinct, other.Distinct) &&
                Equals(FromClause, other.FromClause) &&
                Equals(WhereClause, other.WhereClause) &&
                Equals(GroupByClause, other.GroupByClause) &&
                Equals(HavingClause, other.HavingClause) &&
                Equals(OrderByClause, other.OrderByClause) &&
                Equals(OffsetLimitClause, other.OffsetLimitClause) &&
                SelectElements.AreEqual(other.SelectElements));
     }
     return(false);
 }
示例#5
0
        /// <summary>
        /// Returns a string representation of the parsed selector. This may not exactly match the input
        /// selector as it is regenerated.
        /// </summary>
        ///
        /// <returns>
        /// A CSS selector string.
        /// </returns>

        public override string ToString()
        {
            string output = "";

            switch (TraversalType)
            {
            case TraversalType.Child:
                output += " > ";
                break;

            case TraversalType.Descendent:
                output += " ";
                break;

            case TraversalType.Adjacent:
                output += " + ";
                break;

            case TraversalType.Sibling:
                output += " ~ ";
                break;
            }

            if (SelectorType.HasFlag(SelectorType.Elements))
            {
                output += "<ElementList[" + SelectElements.Count() + "]> ";
            }
            if (SelectorType.HasFlag(SelectorType.HTML))
            {
                output += "<HTML[" + Html.Length + "]> ";
            }
            if (SelectorType.HasFlag(SelectorType.Tag))
            {
                output += Tag;
            }
            if (SelectorType.HasFlag(SelectorType.ID))
            {
                output += "#" + ID;
            }

            if (SelectorType.HasFlag(SelectorType.AttributeValue)
                //|| SelectorType.HasFlag(SelectorType.AttributeExists)
                )
            {
                output += "[" + AttributeName;
                if (!String.IsNullOrEmpty(AttributeValue))
                {
                    output += "." + AttributeSelectorType.ToString() + ".'" + AttributeValue + "'";
                }
                output += "]";
            }
            if (SelectorType.HasFlag(SelectorType.Class))
            {
                output += "." + Class;
            }
            if (SelectorType.HasFlag(SelectorType.All))
            {
                output += "*";
            }
            if (SelectorType.HasFlag(SelectorType.PseudoClass))
            {
                output += ":" + PseudoSelector.Name;
                if (PseudoSelector.Arguments != null && PseudoSelector.Arguments.Length > 0)
                {
                    output += "(" + String.Join(",", PseudoSelector.Arguments) + ")";
                }
            }

            return(output);
        }
示例#6
0
        public override string ToString()
        {
            string output = "";

            switch (TraversalType)
            {
            case TraversalType.All:
                output = "";
                break;

            case TraversalType.Child:
                output += " > ";
                break;

            case TraversalType.Descendent:
                output += " ";
                break;
            }
            if (SelectorType.HasFlag(SelectorType.Elements))
            {
                output += "<ElementList[" + SelectElements.Count() + "]> ";
            }
            if (SelectorType.HasFlag(SelectorType.HTML))
            {
                output += "<HTML[" + Html.Length + "]> ";
            }
            if (SelectorType.HasFlag(SelectorType.Tag))
            {
                output += Tag;
            }
            if (SelectorType.HasFlag(SelectorType.ID))
            {
                output += "#" + ID;
            }
            if (SelectorType.HasFlag(SelectorType.Attribute))
            {
                output += "[" + AttributeName;
                if (!String.IsNullOrEmpty(AttributeValue))
                {
                    output += "." + AttributeSelectorType.ToString() + ".'" + AttributeValue + "'";
                }
                output += "]";
            }
            if (SelectorType.HasFlag(SelectorType.Class))
            {
                output += "." + Class;
            }
            if (SelectorType.HasFlag(SelectorType.All))
            {
                output += "*";
            }
            if (SelectorType.HasFlag(SelectorType.Position))
            {
                output += ":" + PositionType.ToString();
                if (IsFunction)
                {
                    output += "(" + PositionIndex + ")";
                }
                else if (SubSelectors.Count > 0)
                {
                    output += SubSelectors.ToString();
                }
            }
            if (SelectorType.HasFlag(SelectorType.Contains))
            {
                output += ":contains(" + Criteria + ")";
            }


            return(output);
        }