52 lines
1.9 KiB
Swift
Raw Normal View History

2018-08-24 18:42:07 +02:00
/**
* 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)
]
)
}
}