//
//  ScalesNumberFormatter.swift
//  GraphTest
//
//  Created by Andrei Salavei on 4/13/19.
//  Copyright © 2019 Andrei Salavei. All rights reserved.
//

import Foundation
#if os(macOS)
import Cocoa
#else
import UIKit
#endif

private let milionsScale = "M"
private let thousandsScale = "K"

class ScalesNumberFormatter: NumberFormatter {
    override func string(from number: NSNumber) -> String? {
        let value = number.doubleValue
        let pow = log10(value)
        if pow >= 6 {
            guard let string = super.string(from: NSNumber(value: value / 1_000_000)) else {
                return nil
            }
            return string + milionsScale
        } else if pow >= 4 {
            guard let string = super.string(from: NSNumber(value: value / 1_000)) else {
                return nil
            }
            return string + thousandsScale
        } else {
            return super.string(from: number)
        }
    }
}