Aspectacular.RelativeTimeSpanExtensions.CalculationParent C# (CSharp) Method

CalculationParent() public static method

Returns higher time Unit in which the given Unit is *repeated within*. This is not a direct hierarchy! Different types of units may have same parent. For example, Month number 1..12 is repeated within a Year, so Month's parent is Year, not quarter. Quarter 1..4 also is repeated within a year, so Quarter's parent is also year. Same goes for Week number 1..52.
public static CalculationParent ( this unit ) : TimeUnits?
unit this
return TimeUnits?
        public static TimeUnits? CalculationParent(this TimeUnits unit)
        {
            switch(unit)
            {
                case TimeUnits.Century:
                    return null; // no parent.
                case TimeUnits.Decade:
                    return TimeUnits.Century;
                case TimeUnits.Year:
                    return null; // no parent.
                case TimeUnits.Quarter:
                    return TimeUnits.Year;
                case TimeUnits.Month:
                    return TimeUnits.Year;
                case TimeUnits.Week:
                    return TimeUnits.Year;
                case TimeUnits.Day:
                    return TimeUnits.Month;
                case TimeUnits.Hour:
                    return TimeUnits.Day;
                case TimeUnits.Minute:
                    return TimeUnits.Hour;
                case TimeUnits.Second:
                    return TimeUnits.Minute;
            }

            throw new Exception("Parent of \"{0}\" is not specified.".SmartFormat(unit));
        }