Skip to content

Commit 4e7daa1

Browse files
authored
Merge pull request #14 from mtynior/swift_6_update
Update code to Swift 6. Fix #13
2 parents 50b6a31 + 13aeddb commit 4e7daa1

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

Example/main.swift

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ func printStyles() {
2929
}
3030

3131
func printF1() {
32-
3332
let car1 = TerminalColor.green.foregroundStyleCode().open
3433
let car2 = TerminalColor.red.foregroundStyleCode().open
3534
let car3 = TerminalColor.mediumPurple.foregroundStyleCode().open
@@ -58,11 +57,9 @@ func printF1() {
5857
print(car3 + " ▀ ▀ " + car4 + " ███▀████▀███ ")
5958
print(car3 + " " + car4 + " ▀ ▀ ")
6059
print("\n\n")
61-
6260
}
6361

6462
func printPacman() {
65-
6663
// inspired by https://github.com/jaykru/colorscripts
6764

6865
let pacmanColor = TerminalColor.yellow.foregroundStyleCode().open
@@ -83,7 +80,6 @@ func printPacman() {
8380
}
8481

8582
func printMario() {
86-
8783
let red = TerminalColor.red.foregroundStyleCode().open
8884
let brown = TerminalColor.darkRed.foregroundStyleCode().open
8985
let skin = TerminalColor.sandyBrown.foregroundStyleCode().open
@@ -109,7 +105,6 @@ func printMario() {
109105
print("\(brown) ███ ███ ")
110106
print("\(brown) ████ ████")
111107
print("\n\n")
112-
113108
}
114109

115110
func printInfo() {
@@ -136,5 +131,4 @@ else {
136131
print("Unrecognized command `\(argument)`.")
137132
printInfo()
138133
}
139-
140134
}

Sources/ColorizeSwift/ColorizeSwift.swift

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,14 @@ public struct TerminalStyle {
5858

5959
extension String {
6060
/// Enable/disable colorization
61-
public static var isColorizationEnabled = true
61+
public static var isColorizationEnabled: Bool {
62+
get {
63+
return StringColorizationManager.shared.isColorizationEnabled
64+
}
65+
set {
66+
StringColorizationManager.shared.isColorizationEnabled = newValue
67+
}
68+
}
6269

6370
public func bold() -> String {
6471
return applyStyle(TerminalStyle.bold)
@@ -93,7 +100,7 @@ extension String {
93100
}
94101

95102
public func reset() -> String {
96-
guard String.isColorizationEnabled else { return self }
103+
guard StringColorizationManager.shared.isColorizationEnabled else { return self }
97104
return "\u{001B}[0m" + self
98105
}
99106

@@ -116,7 +123,7 @@ extension String {
116123
}
117124

118125
private func applyStyle(_ codeStyle: TerminalStyleCode) -> String {
119-
guard String.isColorizationEnabled else { return self }
126+
guard StringColorizationManager.shared.isColorizationEnabled else { return self }
120127
let str = self.replacingOccurrences(of: TerminalStyle.reset.open, with: TerminalStyle.reset.open + codeStyle.open)
121128

122129
return codeStyle.open + str + TerminalStyle.reset.open
@@ -521,3 +528,20 @@ public enum TerminalColor: UInt8 {
521528
return ("\u{001B}[48;5;\(self.rawValue)m", TerminalStyle.reset.open)
522529
}
523530
}
531+
532+
// MARK: - Colorization Manager
533+
internal final class StringColorizationManager: @unchecked Sendable {
534+
internal static let shared = StringColorizationManager()
535+
536+
private let queue = DispatchQueue(label: "com.github.mtynior.ColorizeSwift.StringColorizationManager")
537+
private var _isColorizationEnabled = true
538+
539+
internal var isColorizationEnabled: Bool {
540+
get {
541+
return queue.sync { _isColorizationEnabled }
542+
}
543+
set {
544+
queue.sync { _isColorizationEnabled = newValue }
545+
}
546+
}
547+
}

0 commit comments

Comments
 (0)