DEVTOOLS-185 Remplacer le json en dur des images resgen #11
@ -119,7 +119,7 @@ class XcassetsGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write Content.json
|
// Write Content.json
|
||||||
let imagesetContentJson = parsedImage.contentJson
|
guard let imagesetContentJson = parsedImage.contentJson else { return }
|
||||||
let contentJsonFilePath = "\(imagesetPath)/Contents.json"
|
let contentJsonFilePath = "\(imagesetPath)/Contents.json"
|
||||||
|
|
||||||
let contentJsonFilePathURL = URL(fileURLWithPath: contentJsonFilePath)
|
let contentJsonFilePathURL = URL(fileURLWithPath: contentJsonFilePath)
|
||||||
|
32
Sources/ResgenSwift/Images/Model/ImageContent.swift
Normal file
32
Sources/ResgenSwift/Images/Model/ImageContent.swift
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
//
|
||||||
|
// ImageContent.swift
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Quentin Bandera on 19/04/2024.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
struct AssetContent: Codable, Equatable {
|
||||||
|
let images: [AssetImageDescription]
|
||||||
|
let info: AssetInfo
|
||||||
|
|
||||||
|
static func == (lhs: AssetContent, rhs: AssetContent) -> Bool {
|
||||||
|
guard lhs.images.count == rhs.images.count else { return false }
|
||||||
q.bandera marked this conversation as resolved
Outdated
|
|||||||
|
let lhsImages = lhs.images.sorted(by: { $0.scale < $1.scale })
|
||||||
|
let rhsImages = rhs.images.sorted(by: { $0.scale < $1.scale })
|
||||||
|
|
||||||
|
return lhsImages == rhsImages
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct AssetImageDescription: Codable, Equatable {
|
||||||
|
let idiom: String
|
||||||
|
let scale: String
|
||||||
|
let filename: String
|
||||||
|
}
|
||||||
|
|
||||||
|
struct AssetInfo: Codable, Equatable {
|
||||||
|
let version: Int
|
||||||
|
let author: String
|
||||||
|
}
|
@ -42,32 +42,43 @@ struct ParsedImage {
|
|||||||
|
|
||||||
// MARK: - Assets
|
// MARK: - Assets
|
||||||
|
|
||||||
var contentJson: String {
|
var contentJson: String? {
|
||||||
"""
|
let encoder = JSONEncoder()
|
||||||
{
|
encoder.outputFormatting = .prettyPrinted
|
||||||
"images" : [
|
|
||||||
{
|
guard let data = try? encoder.encode(imageContent) else {
|
||||||
t.schmitt
commented
Si la méthode appelante ne le fait pas déjà, dans le else regarde comment j'ai fais pour générer un warning pour Xcode. Avec le warning, le dev saura qu'il y a eu un soucis Si la méthode appelante ne le fait pas déjà, dans le else regarde comment j'ai fais pour générer un warning pour Xcode. Avec le warning, le dev saura qu'il y a eu un soucis
|
|||||||
"idiom" : "universal",
|
let error = ImagesError.writeFile("Contents.json", "Error encoding json file")
|
||||||
"scale" : "1x",
|
print(error.description)
|
||||||
"filename" : "\(name).\(XcassetsGenerator.outputImageExtension)"
|
Images.exit(withError: error)
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "2x",
|
|
||||||
"filename" : "\(name)@2x.\(XcassetsGenerator.outputImageExtension)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"idiom" : "universal",
|
|
||||||
"scale" : "3x",
|
|
||||||
"filename" : "\(name)@3x.\(XcassetsGenerator.outputImageExtension)"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"info" : {
|
|
||||||
"version" : 1,
|
|
||||||
"author" : "ResgenSwift-Imagium"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
"""
|
|
||||||
|
return String(data: data, encoding: .utf8)
|
||||||
|
}
|
||||||
|
|
||||||
|
var imageContent: AssetContent {
|
||||||
|
return AssetContent(
|
||||||
|
images: [
|
||||||
|
AssetImageDescription(
|
||||||
|
idiom: "universal",
|
||||||
|
scale: "1x",
|
||||||
|
filename: "\(name).\(XcassetsGenerator.outputImageExtension)"
|
||||||
|
),
|
||||||
|
AssetImageDescription(
|
||||||
|
idiom: "universal",
|
||||||
|
scale: "2x",
|
||||||
|
filename: "\(name)@2x.\(XcassetsGenerator.outputImageExtension)"
|
||||||
|
),
|
||||||
|
AssetImageDescription(
|
||||||
|
idiom: "universal",
|
||||||
|
scale: "3x",
|
||||||
|
filename: "\(name)@3x.\(XcassetsGenerator.outputImageExtension)"
|
||||||
|
)
|
||||||
|
],
|
||||||
|
info: AssetInfo(
|
||||||
|
version: 1,
|
||||||
|
author: "ResgenSwift-Imagium"
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Extension property
|
// MARK: - Extension property
|
||||||
|
@ -127,35 +127,33 @@ final class ParsedImageTests: XCTestCase {
|
|||||||
height: 10)
|
height: 10)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let property = parsedImage.contentJson
|
let property = parsedImage.imageContent
|
||||||
|
|
||||||
// Expect
|
// Expect
|
||||||
let expect = """
|
let expect = AssetContent(
|
||||||
{
|
images: [
|
||||||
"images" : [
|
AssetImageDescription(
|
||||||
{
|
idiom: "universal",
|
||||||
"idiom" : "universal",
|
scale: "1x",
|
||||||
"scale" : "1x",
|
filename: "\(parsedImage.name).\(XcassetsGenerator.outputImageExtension)"
|
||||||
"filename" : "\(imageName).\(XcassetsGenerator.outputImageExtension)"
|
),
|
||||||
},
|
AssetImageDescription(
|
||||||
{
|
idiom: "universal",
|
||||||
"idiom" : "universal",
|
scale: "2x",
|
||||||
"scale" : "2x",
|
filename: "\(parsedImage.name)@2x.\(XcassetsGenerator.outputImageExtension)"
|
||||||
"filename" : "\(imageName)@2x.\(XcassetsGenerator.outputImageExtension)"
|
),
|
||||||
},
|
AssetImageDescription(
|
||||||
{
|
idiom: "universal",
|
||||||
"idiom" : "universal",
|
scale: "3x",
|
||||||
"scale" : "3x",
|
filename: "\(parsedImage.name)@3x.\(XcassetsGenerator.outputImageExtension)"
|
||||||
"filename" : "\(imageName)@3x.\(XcassetsGenerator.outputImageExtension)"
|
)
|
||||||
}
|
],
|
||||||
],
|
info: AssetInfo(
|
||||||
"info" : {
|
version: 1,
|
||||||
"version" : 1,
|
author: "ResgenSwift-Imagium"
|
||||||
"author" : "ResgenSwift-Imagium"
|
)
|
||||||
}
|
)
|
||||||
}
|
|
||||||
"""
|
|
||||||
|
|
||||||
XCTAssertEqual(property.adaptForXCTest(), expect.adaptForXCTest())
|
XCTAssertEqual(property, expect)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user
Tu peux optimiser les performances:
Pas besoin de check les infos.
Si tu as pas le meme count, tu ne vas pas parcourir ton tableau
images
c'est toujours ca de gagné.