示例#1
0
        private bool MatchPath(SimplePath path, NvdlSection parentState)
        {
            var stack = parentState.elementNameStack.ToArray();

            if (stack.Length == 0)
            {
                return(false);
            }
            int elemStep = stack.Length - 1;

            for (int i = path.Steps.Length - 1; i >= 0 && elemStep >= 0;)
            {
                SimplePathStep ps = path.Steps [i];
                if (ps.Name != stack [elemStep] as string)
                {
                    // reject a/b while allow a//b
                    if (!ps.Descendants)
                    {
                        return(false);
                    }
                    --elemStep;
                }
                else
                {
                    i--;
                    elemStep--;
                }
            }
            return(true);
        }
示例#2
0
        private bool MatchPath(SimplePath path, NvdlSection parentState)
        {
            ArrayList stack = parentState.elementNameStack;

            if (stack.Count == 0)
            {
                return(false);
            }
            int elemStep = stack.Count - 1;

            for (int i = path.Steps.Length - 1; i >= 0 && elemStep >= 0;)
            {
                SimplePathStep ps = path.Steps [i];
                if (ps.Name != stack [elemStep] as string)
                {
                    // reject a/b while allow a//b
                    if (!ps.Descendants)
                    {
                        return(false);
                    }
                    --elemStep;
                }
                else
                {
                    i--;
                    elemStep--;
                }
            }
            NvdlDebug.Writer.Write("------ matched path: ");
            for (int i = 0; i < stack.Count; i++)
            {
                NvdlDebug.Writer.Write('[' + (string)stack [i] + ']');
            }
            NvdlDebug.Writer.Write(" -> ");
            for (int i = 0; i < path.Steps.Length; i++)
            {
                NvdlDebug.Writer.Write('[' + path.Steps [i].Name + ']');
            }
            NvdlDebug.Writer.WriteLine();
            return(true);
        }
示例#3
0
		public SimplePath (SimplePathStep [] steps)
		{
			this.steps = steps;
		}