Exemplo n.º 1
0
 /// <inheritdoc/>
 public override PureWindowsPath NormCase(CultureInfo currentCulture)
 {
     return(new PureWindowsPath(
                Drive.ToLower(currentCulture),
                Root,
                Dirname.ToLower(currentCulture),
                Basename.ToLower(currentCulture),
                Extension.ToLower(currentCulture)));
 }
Exemplo n.º 2
0
        /// <inheritdoc/>
        private IEnumerable <string> BuildPartsArray()
        {
            if (Anchor != String.Empty)
            {
                yield return(Anchor);
            }

            foreach (var part in Dirname.Split(
                         new [] { PathSeparator }, StringSplitOptions.RemoveEmptyEntries))
            {
                yield return(part);
            }

            if (Filename != String.Empty)
            {
                yield return(Filename);
            }
        }
Exemplo n.º 3
0
        /// <inheritdoc/>
        public TPath RelativeTo(IPurePath parent)
        {
            if (!ComponentComparer.Equals(parent.Drive, Drive) ||
                !ComponentComparer.Equals(parent.Root, Root))
            {
                throw new ArgumentException(String.Format(
                                                "'{0}' does not share the same root/drive as '{1}', " +
                                                "thus cannot be relative.", this, parent));
            }

            var thisDirname = Dirname
                              .Split(PathSeparator[0]).GetEnumerator();
            var parentRelative = parent.Relative().ToString();

            if (parentRelative == String.Empty)
            {
                return(Relative());
            }

            var parentDirname = parentRelative.Split(PathSeparator[0]).GetEnumerator();

            while (parentDirname.MoveNext())
            {
                if (!thisDirname.MoveNext() ||
                    !ComponentComparer.Equals(parentDirname.Current, thisDirname.Current))
                {
                    throw new ArgumentException(String.Format(
                                                    "'{0}' does not start with '{1}'", this, parent));
                }
            }
            var builder = new StringBuilder();

            while (thisDirname.MoveNext())
            {
                if (builder.Length != 0)
                {
                    builder.Append(PathSeparator);
                }
                builder.Append(thisDirname.Current);
            }
            return(PurePathFactoryFromComponents(
                       null, null, null, builder.ToString(), Basename, Extension));
        }