public static Qualifier ToCommonRoot(this Qualifier qualifier, Qualifier other, StringComparison comparison = StringComparison.Ordinal) { var fragmentLength = FindCommonFragmentLength(qualifier, other, comparison); switch (fragmentLength) { case int.MinValue: return(new Qualifier()); default: return(qualifier.ToTrimmedNamed(0, fragmentLength)); } }
/// <summary> /// Extracts a sub qualifier relative to given super qualifier given the current qualifier. /// </summary> /// <param name="qualifier">The given qualifier</param> /// <param name="supQualifier">The super qualifier</param> /// <param name="comparison">Comparision method</param> /// <returns>A sub qualifier relative to super qualifier</returns> public static Qualifier ToSubQualifierOf(this Qualifier qualifier, Qualifier supQualifier, StringComparison comparison = StringComparison.Ordinal) { var fragmentLength = FindCommonFragmentLength(supQualifier, qualifier, comparison); switch (fragmentLength) { case int.MaxValue: return(new Qualifier()); default: if (fragmentLength == supQualifier.Named.Frags.Count) { // Only if super qualifier is completely covered by sub qualifier return(qualifier.ToTrimmedNamed(supQualifier.Named.Frags.Count)); } else { return(new Qualifier()); } } }