Skip to content

Instantly share code, notes, and snippets.

@StanleyGoldman
Created June 27, 2018 18:27
Show Gist options
  • Save StanleyGoldman/8832f9304aa36149d7ba87766dfd3f29 to your computer and use it in GitHub Desktop.
Save StanleyGoldman/8832f9304aa36149d7ba87766dfd3f29 to your computer and use it in GitHub Desktop.
public class StatusOutputPathComparer : IComparer<string>
{
public static StatusOutputPathComparer Instance => new StatusOutputPathComparer();
public int Compare(string x, string y)
{
Guard.ArgumentNotNull(x, nameof(x));
Guard.ArgumentNotNull(y, nameof(y));
var xIsMeta = x.EndsWith(".meta");
var yIsMeta = y.EndsWith(".meta");
var mixedMeta = xIsMeta ^ yIsMeta;
if (mixedMeta)
{
var compareX = !xIsMeta ? x : x.Substring(0, x.Length - 5);
var compareY = !yIsMeta ? y : y.Substring(0, y.Length - 5);
var comparisonResult = StringComparer.InvariantCultureIgnoreCase.Compare(compareX, compareY);
if (comparisonResult != 0)
{
return comparisonResult;
}
if (xIsMeta)
{
return 1;
}
if (yIsMeta)
{
return -1;
}
}
return StringComparer.InvariantCultureIgnoreCase.Compare(x, y);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment