//
//  FontName.swift
//  
//
//  Created by Thibaut Schmitt on 29/08/2022.
//

import Foundation

// swiftlint:disable no_grouping_extension

struct FontName: Hashable {

    let postscriptName: String
    let filename: String
    let fileExtension: String
}

extension FontName {

    var fontNameSanitize: String {
        postscriptName.removeCharacters(from: "[]+-_")
    }

    func getProperty(isStatic: Bool, isSwiftUI: Bool) -> String {
        if isSwiftUI {
            if isStatic {
                return """
                    static let \(fontNameSanitize): ((_ size: CGFloat) -> Font) = { size in
                        Font.custom(FontName.\(fontNameSanitize).rawValue, size: size)
                    }
                """
            }
            return """
                func \(fontNameSanitize)(withSize size: CGFloat) -> Font {
                    Font.custom(FontName.\(fontNameSanitize).rawValue, size: size)
                }
            """
        }
        // UIKit
        if isStatic {
            return """
                static let \(fontNameSanitize): ((_ size: CGFloat) -> UIFont) = { size in
                    UIFont(name: FontName.\(fontNameSanitize).rawValue, size: size)!
                }
            """
        }
        return """
            func \(fontNameSanitize)(withSize size: CGFloat) -> UIFont {
                UIFont(name: FontName.\(fontNameSanitize).rawValue, size: size)!
            }
        """
    }
}
