@@ -10,32 +10,65 @@ import Sourceful
10
10
11
11
struct CustomCodeTheme : SourceCodeTheme {
12
12
13
+ private enum Constants {
14
+ static let backgroundDarkColor = NSColor ( red: 41 / 255 , green: 42 / 255 , blue: 48 / 255 , alpha: 1.0 )
15
+ static let plainTypeLightColor = NSColor ( red: 2 / 255 , green: 2 / 255 , blue: 2 / 255 , alpha: 1.0 )
16
+ static let plainTypeDarkColor = NSColor ( red: 223 / 255 , green: 223 / 255 , blue: 224 / 255 , alpha: 1.0 )
17
+ static let numberTypeLightColor = NSColor ( red: 40 / 255 , green: 41 / 255 , blue: 208 / 255 , alpha: 1.0 )
18
+ static let numberTypeDarkColor = NSColor ( red: 214 / 255 , green: 202 / 255 , blue: 134 / 255 , alpha: 1.0 )
19
+ static let stringTypeLightColor = NSColor ( red: 192 / 255 , green: 62 / 255 , blue: 41 / 255 , alpha: 1.0 )
20
+ static let stringTypeDarkColor = NSColor ( red: 239 / 255 , green: 136 / 255 , blue: 118 / 255 , alpha: 1.0 )
21
+ static let identifierTypeLightColor = NSColor ( red: 121 / 255 , green: 82 / 255 , blue: 178 / 255 , alpha: 1.0 )
22
+ static let identifierTypeDarkColor = NSColor ( red: 171 / 255 , green: 131 / 255 , blue: 228 / 255 , alpha: 1.0 )
23
+ static let keywordTypeLightColor = NSColor ( red: 160 / 255 , green: 69 / 255 , blue: 160 / 255 , alpha: 1.0 )
24
+ static let keywordTypeDarkColor = NSColor ( red: 238 / 255 , green: 130 / 255 , blue: 176 / 255 , alpha: 1.0 )
25
+ static let commentColor = NSColor ( red: 129 / 255.0 , green: 140 / 255.0 , blue: 150 / 255.0 , alpha: 1.0 )
26
+
27
+ static let font = NSFont . monospacedSystemFont ( ofSize: 15 , weight: . regular)
28
+ static let gutterStyle = GutterStyle ( backgroundColor: NSColor . clear, minimumWidth: 0 )
29
+ }
30
+
31
+ // MARK: - Stored Properties
32
+
33
+ private var colorScheme : ColorScheme = . dark
34
+
13
35
private static var lineNumbersColor : NSColor = . clear
14
- public let lineNumbersStyle : LineNumbersStyle ? = nil
15
- public let gutterStyle : GutterStyle = GutterStyle ( backgroundColor: Color . clear, minimumWidth: 0 )
16
- public let font = NSFont . monospacedSystemFont ( ofSize: 15 , weight: . regular)
17
36
18
- public let backgroundColor = Color ( red: 41 / 255.0 , green: 42 / 255 , blue: 48 / 255 , alpha: 1.0 )
37
+ internal let lineNumbersStyle : LineNumbersStyle ? = nil
38
+ internal let gutterStyle : GutterStyle = Constants . gutterStyle
39
+ internal let font = Constants . font
40
+
41
+ // MARK: - Computed Properties
42
+
43
+ internal var backgroundColor : NSColor {
44
+ return colorScheme == . dark ? Constants . backgroundDarkColor : NSColor . white
45
+ }
46
+
47
+ // MARK: - Initialization
48
+
49
+ init ( colorScheme: ColorScheme ) {
50
+ self . colorScheme = colorScheme
51
+ }
52
+
53
+ // MARK: - Methods
19
54
20
- public func color( for syntaxColorType: SourceCodeTokenType ) -> NSColor {
55
+ func color( for syntaxColorType: SourceCodeTokenType ) -> NSColor {
21
56
switch syntaxColorType {
22
57
case . plain:
23
- return Color ( red : 223 / 255 , green : 223 / 255 , blue : 224 / 255 , alpha : 1.0 )
58
+ return colorScheme == . dark ? Constants . plainTypeDarkColor : Constants . plainTypeLightColor
24
59
case . number:
25
- return Color ( red : 214 / 255 , green : 202 / 255 , blue : 134 / 255 , alpha : 1.0 )
60
+ return colorScheme == . dark ? Constants . numberTypeDarkColor : Constants . numberTypeLightColor
26
61
case . string:
27
- return Color ( red : 239 / 255 , green : 136 / 255 , blue : 118 / 255 , alpha : 1.0 )
62
+ return colorScheme == . dark ? Constants . stringTypeDarkColor : Constants . stringTypeLightColor
28
63
case . identifier:
29
- return Color ( red : 171 / 255 , green : 131 / 255 , blue : 228 / 255 , alpha : 1.0 )
64
+ return colorScheme == . dark ? Constants . identifierTypeDarkColor : Constants . identifierTypeLightColor
30
65
case . keyword:
31
- return Color ( red : 238 / 255 , green : 130 / 255 , blue : 176 / 255 , alpha : 1.0 )
66
+ return colorScheme == . dark ? Constants . keywordTypeDarkColor : Constants . keywordTypeLightColor
32
67
case . comment:
33
- return Color ( red : 129 / 255.0 , green : 140 / 255.0 , blue : 150 / 255.0 , alpha : 1.0 )
68
+ return Constants . commentColor
34
69
case . editorPlaceholder:
35
- return . gray
70
+ return colorScheme == . dark ? . gray : . lightGray
36
71
}
37
72
}
38
73
39
- public init ( ) { }
40
-
41
74
}
0 commit comments