private static void VisitComposite(CompositeSubsegment segment, ValueDictionary variables)
		{
			foreach (LiteralSubsegment subsegment in segment.Segments)
			{
				VariableSubsegment variable = (subsegment as VariableSubsegment);
				if (variable == null)
					continue;

				VisitVariable(variable, variables);
			}
		}
        private static void VisitComposite(CompositeSubsegment segment, ValueDictionary variables)
        {
            foreach (LiteralSubsegment subsegment in segment.Segments)
            {
                VariableSubsegment variable = (subsegment as VariableSubsegment);
                if (variable == null)
                {
                    continue;
                }

                VisitVariable(variable, variables);
            }
        }
        private static void VisitSegment(ContentSegment segment, ValueDictionary variables)
        {
            foreach (PathSubsegment subsegment in segment.Segments)
            {
                VariableSubsegment  variable  = (subsegment as VariableSubsegment);
                CompositeSubsegment composite = (subsegment as CompositeSubsegment);

                if (variable != null)
                {
                    VisitVariable(variable, variables);
                }

                else if (composite != null)
                {
                    VisitComposite(composite, variables);
                }
            }
        }
Esempio n. 4
0
        public static IList <PathSubsegment> Compose(IList <PathSubsegment> collection)
        {
            if (collection.Count < 2)
            {
                return(collection);
            }

            List <PathSubsegment> segments  = new List <PathSubsegment>();
            CompositeSubsegment   composite = null;

            foreach (PathSubsegment segment in collection)
            {
                LiteralSubsegment literal = (segment as LiteralSubsegment);
                if (literal != null)
                {
                    (composite = composite ?? new CompositeSubsegment())
                    .Segments.Add(literal);
                }
                else
                {
                    if (composite != null)
                    {
                        segments.Add(composite);
                    }

                    composite = null;
                    segments.Add(segment);
                }
            }
            if (composite != null)
            {
                segments.Add(composite);
            }

            return(segments);
        }