Exemplo n.º 1
0
 public static bool Equals(Path first, Path second, PathComparison comparison = PathComparison.Default)
 {
     if (ReferenceEquals(first, null) && ReferenceEquals(second, null))
     {
         return(true);
     }
     if (ReferenceEquals(first, null) || ReferenceEquals(second, null))
     {
         return(false);
     }
     return(first.Equals(second, comparison));
 }
Exemplo n.º 2
0
        /// <summary>Vergleicht das aktuelle Objekt mit einem anderen Objekt desselben Typs.</summary>
        /// <returns>Ein Wert, der die relative Reihenfolge der verglichenen Objekte angibt. Der Rückgabewert hat folgende Bedeutung: Wert  Bedeutung  Kleiner als 0  Dieses Objekt ist kleiner als der <paramref name="other" />-Parameter. Zero  Dieses Objekt ist gleich <paramref name="other" />.  Größer als 0 (null)  Dieses Objekt ist größer als <paramref name="other" />.</returns>
        /// <param name="other">Ein Objekt, das mit diesem Objekt verglichen werden soll.</param>
        /// <param name="comparisonType">Art des Stringvergleiches</param>
        public int CompareTo(Path other, PathComparison comparisonType)
        {
            StringComparison stringComparison = comparisonType.ConvertToStringComparison().OrDefault(DefaultComparison);

            for (var i = 0; i < m_parts.Count && i < other.m_parts.Count; i++)
            {
                int result = string.Compare(m_parts[i], other.m_parts[i], stringComparison);
                if (result != 0)
                {
                    return(result);
                }
            }

            return(m_parts.Count.CompareTo(other.m_parts.Count));
        }
Exemplo n.º 3
0
 public static int CompareTo(Path first, Path second, PathComparison comparison = PathComparison.Default)
 {
     if (ReferenceEquals(first, null) && ReferenceEquals(second, null))
     {
         return(0);
     }
     if (ReferenceEquals(first, null))
     {
         return(-1);
     }
     if (ReferenceEquals(second, null))
     {
         return(1);
     }
     return(first.CompareTo(second, comparison));
 }
Exemplo n.º 4
0
        public bool StartsWith(Path start, PathComparison comparison = PathComparison.Default)
        {
            if (start.Count > Count)
            {
                return(false);
            }
            StringComparison stringComparison = comparison.ConvertToStringComparison().OrDefault(DefaultComparison);

            for (var i = 0; i < start.Count; i++)
            {
                if (!string.Equals(this[i], start[i], stringComparison))
                {
                    return(false);
                }
            }

            return(true);
        }
 public StringComparisonConvertable(PathComparison pc)
 {
     m_pc = pc;
 }
 public static Convertable <StringComparison> ConvertToStringComparison(this PathComparison pc) => new StringComparisonConvertable(pc);
Exemplo n.º 7
0
 /// <summary>Gibt an, ob das aktuelle Objekt gleich einem anderen Objekt des gleichen Typs ist.</summary>
 /// <returns>true, wenn das aktuelle Objekt gleich dem <paramref name="other" />-Parameter ist, andernfalls false.</returns>
 /// <param name="other">Ein Objekt, das mit diesem Objekt verglichen werden soll.</param>
 /// <param name="comparisonType">Art des Stringvergleiches</param>
 public bool Equals(Path other, PathComparison comparisonType)
 {
     return(CompareTo(other, comparisonType) == 0);
 }
Exemplo n.º 8
0
 public Path RemoveStart(Path remove, PathComparison comparison = PathComparison.Default)
 {
     return(ReplaceFromStart(remove, Empty(Separator, DefaultComparison), comparison));
 }
Exemplo n.º 9
0
        public int IndexOf(string item, int index = 0, PathComparison comparison = PathComparison.Default)
        {
            StringComparison stringComparison = comparison.ConvertToStringComparison().OrDefault(DefaultComparison);

            return(m_parts.FindIndex(index, part => string.Equals(part, item, stringComparison)));
        }
Exemplo n.º 10
0
 public Path ReplaceFromStart(string search, string replace, PathComparison comparison = PathComparison.Default)
 {
     return(Replace(search, replace, comparison, 0));
 }
Exemplo n.º 11
0
 public Path Replace([NotNull] string search, [NotNull] string replace, PathComparison comparison = PathComparison.Default, int maxStartIndex = int.MaxValue)
 {
     return(Replace(new Path(search, Separator), new Path(replace, Separator), comparison, maxStartIndex));
 }
Exemplo n.º 12
0
        public Path Replace([NotNull] Path search, [NotNull] Path replace, PathComparison comparison = PathComparison.Default, int maxStartIndex = int.MaxValue)
        {
            if (search == null)
            {
                throw new ArgumentNullException(nameof(search));
            }
            if (replace == null)
            {
                throw new ArgumentNullException(nameof(replace));
            }

            if (Count < search.Count)
            {
                return(this);
            }
            int startIndex = IndexOf(search.m_parts[0], 0, comparison);

            if (startIndex > maxStartIndex)
            {
                return(this);
            }
            if (startIndex < 0)
            {
                return(this);
            }
            if (Count + startIndex < search.Count)
            {
                return(this);
            }

            StringComparison stringComparison = comparison.ConvertToStringComparison().OrDefault(DefaultComparison);

            while (startIndex > -1)
            {
                bool equal = true;
                for (var i = 0; i + startIndex < m_parts.Count && i < search.m_parts.Count; i++)
                {
                    if (!string.Equals(m_parts[i + startIndex], search.m_parts[i], stringComparison))
                    {
                        startIndex = IndexOf(search.m_parts[0], i + startIndex + 1);
                        if (startIndex > maxStartIndex)
                        {
                            return(this);
                        }
                        equal = false;
                        break;
                    }
                }

                if (equal)
                {
                    break;
                }
            }

            if (startIndex == -1)
            {
                return(this);
            }
            return(new Path(this.Take(startIndex).Concat(replace).Concat(this.Skip(startIndex + search.Count)), Separator, DefaultComparison));
        }
Exemplo n.º 13
0
 /// <summary>Vergleicht das aktuelle Objekt mit einem anderen Objekt desselben Typs.</summary>
 /// <returns>Ein Wert, der die relative Reihenfolge der verglichenen Objekte angibt. Der Rückgabewert hat folgende Bedeutung: Wert  Bedeutung  Kleiner als 0  Dieses Objekt ist kleiner als der <paramref name="other" />-Parameter. Zero  Dieses Objekt ist gleich <paramref name="other" />.  Größer als 0 (null)  Dieses Objekt ist größer als <paramref name="other" />.</returns>
 /// <param name="other">Ein Objekt, das mit diesem Objekt verglichen werden soll.</param>
 /// <param name="comparisonType">Art des Stringvergleiches</param>
 public int CompareTo(string other, PathComparison comparisonType)
 {
     return(CompareTo(new Path(other, Separator), comparisonType));
 }