52 lines
1.9 KiB
Swift
52 lines
1.9 KiB
Swift
|
/**
|
||
|
* Splash
|
||
|
* Copyright (c) John Sundell 2018
|
||
|
* MIT license - see LICENSE.md
|
||
|
*/
|
||
|
|
||
|
import Foundation
|
||
|
|
||
|
/// A theme describes what fonts and colors to use when rendering
|
||
|
/// certain output formats - such as `NSAttributedString`. A default
|
||
|
/// implementation is provided that matches the "Sundell's Colors"
|
||
|
/// Xcode theme, by using the `sundellsColors(withFont:)` method.
|
||
|
public struct Theme {
|
||
|
/// What font to use to render the highlighted text
|
||
|
public var font: Font
|
||
|
/// What color to use for plain text (no highlighting)
|
||
|
public var plainTextColor: Color
|
||
|
/// What color to use for the text's highlighted tokens
|
||
|
public var tokenColors: [TokenType : Color]
|
||
|
|
||
|
public init(font: Font, plainTextColor: Color, tokenColors: [TokenType : Color]) {
|
||
|
self.font = font
|
||
|
self.plainTextColor = plainTextColor
|
||
|
self.tokenColors = tokenColors
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public extension Theme {
|
||
|
/// Create a theme matching the "Sundell's Colors" Xcode theme
|
||
|
static func sundellsColors(withFont font: Font) -> Theme {
|
||
|
return Theme(
|
||
|
font: font,
|
||
|
plainTextColor: Color(
|
||
|
red: 0.66,
|
||
|
green: 0.74,
|
||
|
blue: 0.74
|
||
|
),
|
||
|
tokenColors: [
|
||
|
.keyword : Color(red: 0.91, green: 0.2, blue: 0.54),
|
||
|
.string : Color(red: 0.98, green: 0.39, blue: 0.12),
|
||
|
.type : Color(red: 0.51, green: 0.51, blue: 0.79),
|
||
|
.call : Color(red: 0.2, green: 0.56, blue: 0.9),
|
||
|
.number : Color(red: 0.86, green: 0.44, blue: 0.34),
|
||
|
.comment : Color(red: 0.42, green: 0.54, blue: 0.58),
|
||
|
.property : Color(red: 0.13, green: 0.67, blue: 0.62),
|
||
|
.dotAccess : Color(red: 0.57, green: 0.7, blue: 0),
|
||
|
.preprocessing : Color(red: 0.71, green: 0.54, blue: 0)
|
||
|
]
|
||
|
)
|
||
|
}
|
||
|
}
|