72 lines
2.1 KiB
Swift
72 lines
2.1 KiB
Swift
import Runestone
|
|
import UIKit
|
|
|
|
final class ProfileEditorTheme: Theme {
|
|
let font: UIFont = .monospacedSystemFont(ofSize: 14, weight: .regular)
|
|
let textColor: UIColor = .label
|
|
|
|
let gutterBackgroundColor: UIColor = .secondarySystemBackground
|
|
let gutterHairlineColor: UIColor = .separator
|
|
|
|
let lineNumberColor: UIColor = .secondaryLabel
|
|
let lineNumberFont: UIFont = .monospacedSystemFont(ofSize: 14, weight: .regular)
|
|
|
|
let selectedLineBackgroundColor: UIColor = .systemFill
|
|
let selectedLinesLineNumberColor: UIColor = .label
|
|
let selectedLinesGutterBackgroundColor: UIColor = .secondarySystemBackground
|
|
|
|
let invisibleCharactersColor: UIColor = .tertiaryLabel
|
|
|
|
let pageGuideHairlineColor: UIColor = .separator
|
|
let pageGuideBackgroundColor: UIColor = .secondarySystemBackground
|
|
|
|
let markedTextBackgroundColor: UIColor = .systemFill
|
|
let markedTextBackgroundCornerRadius: CGFloat = 4
|
|
|
|
func textColor(for rawHighlightName: String) -> UIColor? {
|
|
guard let highlightName = HighlightName(rawHighlightName) else {
|
|
return nil
|
|
}
|
|
switch highlightName {
|
|
case .comment:
|
|
return .secondaryLabel
|
|
case .property:
|
|
return .systemCyan
|
|
case .string:
|
|
return .systemGreen
|
|
case .number:
|
|
return .systemOrange
|
|
case .constantBuiltin:
|
|
return .systemPurple
|
|
case .error:
|
|
return .systemRed
|
|
}
|
|
}
|
|
|
|
func fontTraits(for _: String) -> FontTraits {
|
|
[]
|
|
}
|
|
}
|
|
|
|
private enum HighlightName: String {
|
|
case comment
|
|
case property
|
|
case string
|
|
case number
|
|
case constantBuiltin = "constant.builtin"
|
|
case error
|
|
|
|
init?(_ rawHighlightName: String) {
|
|
var components = rawHighlightName.split(separator: ".")
|
|
while !components.isEmpty {
|
|
let candidateRawHighlightName = components.joined(separator: ".")
|
|
if let highlightName = Self(rawValue: candidateRawHighlightName) {
|
|
self = highlightName
|
|
return
|
|
}
|
|
components.removeLast()
|
|
}
|
|
return nil
|
|
}
|
|
}
|