/// <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) )); }
/// <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) )); }
/// <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)); } }