//
//  ParsedImage.swift
//  
//
//  Created by Thibaut Schmitt on 24/01/2022.
//

import Foundation

struct ParsedImage {
    let name: String
    let tags: String
    let width: Int
    let height: Int
    
    // MARK: - Convert
    
    var convertArguments: (x1: ConvertArgument, x2: ConvertArgument, x3: ConvertArgument) {
        var width1x = ""
        var height1x = ""
        var width2x = ""
        var height2x = ""
        var width3x = ""
        var height3x = ""
        
        if width != -1 {
            width1x = "\(width)"
            width2x = "\(width * 2)"
            width3x = "\(width * 3)"
        }
        
        if height != -1 {
            height1x = "\(height)"
            height2x = "\(height * 2)"
            height3x = "\(height * 3)"
        }
        
        return (x1: ConvertArgument(width: width1x, height: height1x),
                x2: ConvertArgument(width: width2x, height: height2x),
                x3: ConvertArgument(width: width3x, height: height3x))
    }
    
    // MARK: - Assets
    
    var contentJson: String {
        """
        {
          "images" : [
            {
              "idiom" : "universal",
              "scale" : "1x",
              "filename" : "\(name).\(XcassetsGenerator.outputImageExtension)"
            },
            {
              "idiom" : "universal",
              "scale" : "2x",
              "filename" : "\(name)@2x.\(XcassetsGenerator.outputImageExtension)"
            },
            {
              "idiom" : "universal",
              "scale" : "3x",
              "filename" : "\(name)@3x.\(XcassetsGenerator.outputImageExtension)"
            }
          ],
          "info" : {
            "version" : 1,
            "author" : "ResgenSwift-Imagium"
          }
        }
        """
    }
    
    // MARK: - Extension property
    
    func getImageProperty(isStatic: Bool, isSwiftUI: Bool) -> String {
        if isSwiftUI {
            return """
                \(isStatic ? "static ": "")var \(name): Image {
                    Image("\(name)")
                }
            """
        }
        return """
            \(isStatic ? "static ": "")var \(name): UIImage {
                UIImage(named: "\(name)")!
            }
        """
    }
}
