示例#1
0
        /// <summary>
        ///     Create an <see cref="XSPath"/> containing a single path segment.
        /// </summary>
        /// <param name="pathSegment">
        ///     The path segment.
        /// </param>
        /// <returns>
        ///     The new <see cref="XSPath"/>.
        /// </returns>
        public static XSPath FromSegment(string pathSegment)
        {
            if (pathSegment == null)
            {
                throw new ArgumentNullException(nameof(pathSegment));
            }

            return(FromSegment(
                       XSPathSegment.Create(pathSegment)
                       ));
        }
示例#2
0
        /// <summary>
        ///     Append a path or segment to the path.
        /// </summary>
        /// <param name="pathOrSegment">
        ///     The path or path-segment to append.
        /// </param>
        /// <returns>
        ///     The new <see cref="XSPath"/>.
        /// </returns>
        public XSPath Append(string pathOrSegment)
        {
            if (pathOrSegment == null)
            {
                throw new ArgumentNullException(nameof(pathOrSegment));
            }

            if (pathOrSegment.IndexOf(PathSeparatorCharacter) != -1)
            {
                return(Append(
                           Parse(pathOrSegment)
                           ));
            }

            return(Append(
                       XSPathSegment.Create(pathOrSegment)
                       ));
        }
示例#3
0
        /// <summary>
        ///     Parse a string into an <see cref="XSPathSegment"/>s.
        /// </summary>
        /// <param name="path">
        ///     The string to parse.
        /// </param>
        /// <returns>
        ///     The <see cref="XSPath"/>.
        /// </returns>
        public static IEnumerable <XSPathSegment> ParseSegments(string path)
        {
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }

            if (path == PathSeparatorString)
            {
                yield return(XSPathSegment.Root);
            }

            if (path[path.Length - 1] == PathSeparatorCharacter)
            {
                path = path.Substring(0, path.Length - 1);
            }

            string[] pathSegments = path.Split(new char[] { PathSeparatorCharacter });
            foreach (string pathSegment in pathSegments)
            {
                yield return(XSPathSegment.Create(pathSegment));
            }
        }