// // ImageExtensionGenerator.swift // // // Created by Thibaut Schmitt on 14/02/2022. // import ToolCore import Foundation class ImageExtensionGenerator { // MARK: - pragm static func generateExtensionFile(images: [ParsedImage], staticVar: Bool, inputFilename: String, extensionName: String, extensionFilePath: String) { // Create extension conten1t let extensionContent = Self.getExtensionContent(images: images, staticVar: staticVar, extensionName: extensionName, inputFilename: inputFilename) // Write content let extensionFilePathURL = URL(fileURLWithPath: extensionFilePath) do { try extensionContent.write(to: extensionFilePathURL, atomically: false, encoding: .utf8) } catch (let error) { let error = ImagesError.writeFile(extensionFilePath, error.localizedDescription) print(error.localizedDescription) Images.exit(withError: error) } } // MARK: - Extension content static func getExtensionContent(images: [ParsedImage], staticVar: Bool, extensionName: String, inputFilename: String) -> String { [ Self.getHeader(inputFilename: inputFilename, extensionClassname: extensionName), Self.getProperties(images: images, staticVar: staticVar), Self.getFooter() ] .joined(separator: "\n") } // MARK: - Extension part private static func getHeader(inputFilename: String, extensionClassname: String) -> String { """ // Generated by ResgenSwift.\(Images.toolName) \(ResgenSwiftVersion) // Images from \(inputFilename) import UIKit extension \(extensionClassname) { """ } private static func getProperties(images: [ParsedImage], staticVar: Bool) -> String { if staticVar { return images .map { "\n\($0.getStaticImageProperty())" } .joined(separator: "\n") } return images .map { "\n\($0.getImageProperty())" } .joined(separator: "\n") } private static func getFooter() -> String { """ } """ } }