import Foundation

public extension TimeInterval {
    internal enum DateComponents {
        static let formatterPositional: DateComponentsFormatter = {
            let formatter = DateComponentsFormatter()
            formatter.allowedUnits = [.minute, .second]
            formatter.unitsStyle = .positional
            formatter.zeroFormattingBehavior = .pad
            return formatter
        }()
    }

    var positionalTime: String {
        guard !self.isNaN && !self.isInfinite,
              let string = DateComponents.formatterPositional.string(from: self) else { return "--:--" }
        return string
    }

    var detailedPositionalTime: String {
        guard !self.isNaN && !self.isInfinite else { return "--:--.--" }

        let minutes = Int(self / 60)
        let seconds = Int(self.truncatingRemainder(dividingBy: 60))
        let tenths = Int((self * 10).truncatingRemainder(dividingBy: 10))

        return String(format: "%02d:%02d.%d", minutes, seconds, tenths)
    }
}
