mirror of
https://github.com/XcodesOrg/XcodesApp.git
synced 2026-02-06 20:28:39 +01:00
61 lines
1.6 KiB
Swift
61 lines
1.6 KiB
Swift
//
|
|
// CompilersView.swift
|
|
// Xcodes
|
|
//
|
|
// Created by Duong Thai on 13/10/2023.
|
|
// Copyright © 2023 Robots and Pencils. All rights reserved.
|
|
//
|
|
|
|
import SwiftUI
|
|
import struct XCModel.Compilers
|
|
|
|
struct CompilersView: View {
|
|
let compilers: Compilers?
|
|
|
|
var body: some View {
|
|
if let compilers = compilers {
|
|
VStack(alignment: .leading) {
|
|
Text("Compilers").font(.headline)
|
|
Text(Self.content(from: compilers))
|
|
.font(.subheadline)
|
|
.textSelection(.enabled)
|
|
}
|
|
} else {
|
|
EmptyView()
|
|
}
|
|
}
|
|
|
|
static func content(from compilers: Compilers) -> String {
|
|
[ ("Swift", compilers.swift),
|
|
("Clang", compilers.clang),
|
|
("LLVM", compilers.llvm),
|
|
("LLVM GCC", compilers.llvm_gcc),
|
|
("GCC", compilers.gcc)
|
|
].compactMap { // remove nil compiler
|
|
guard $0.1 != nil, // has version array
|
|
!$0.1!.isEmpty // has at least 1 version
|
|
else { return nil }
|
|
|
|
let numbers = $0.1!.compactMap { $0.number } // remove nil number
|
|
guard !numbers.isEmpty // has at least 1 number
|
|
else { return nil }
|
|
|
|
// description for each type of compilers
|
|
return "\($0.0): \(numbers.joined(separator: ", "))"
|
|
}.joined(separator: "\n")
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
let compilers = Compilers(
|
|
gcc: .init(number: "4"),
|
|
llvm_gcc: .init(number: "213"),
|
|
llvm: .init(number: "2.3"),
|
|
clang: .init(number: "7.3"),
|
|
swift: .init(number: "5.3.2")
|
|
)
|
|
|
|
return CompilersView(compilers: compilers)
|
|
.padding()
|
|
}
|