Skip to content

Commit eb6e391

Browse files
committed
Make convenient properties for SwiftDocKey to public
1 parent 5ca8422 commit eb6e391

File tree

1 file changed

+106
-20
lines changed

1 file changed

+106
-20
lines changed

Source/SourceKittenFramework/SourceKitVariant.swift

+106-20
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Foundation
1111
import SourceKit
1212
#endif
1313

14+
// MARK: - Basic properties of SourceKitVariant
1415
public struct SourceKitVariant {
1516
public var array: [SourceKitVariant]? {
1617
get { return box.array }
@@ -56,6 +57,111 @@ public struct SourceKitVariant {
5657
fileprivate let box: _VariantBox
5758
}
5859

60+
// MARK: - Convenient properties for SwiftDocKey
61+
extension SourceKitVariant {
62+
/// Annotated declaration (String).
63+
public var annotatedDeclaration: String?
64+
{ return self[.annotatedDeclaration]?.string }
65+
/// Body length (Int).
66+
public var bodyLength: Int?
67+
{ return self[.bodyLength]?.int }
68+
/// Body offset (Int).
69+
public var bodyOffset: Int? { return self[.bodyOffset]?.int }
70+
/// Diagnostic stage (String).
71+
public var diagnosticStage: String? { return self[.diagnosticStage]?.string }
72+
/// File path (String).
73+
public var filePath: String? { return self[.filePath]?.string }
74+
/// Full XML docs (String).
75+
public var fullXMLDocs: String? { return self[.fullXMLDocs]?.string }
76+
/// Kind (SourceKitVariant.string).
77+
public var kind: SourceKitVariant? { return self[.kind] }
78+
/// Length (Int).
79+
public var length: Int? { return self[.length]?.int }
80+
/// Name (String).
81+
public var name: String? { return self[.name]?.string }
82+
/// Name length (Int).
83+
public var nameLength: Int? { return self[.nameLength]?.int }
84+
/// Name offset (Int).
85+
public var nameOffset: Int? { return self[.nameOffset]?.int }
86+
/// Offset (Int).
87+
public var offset: Int? { return self[.offset]?.int }
88+
/// Substructure ([SourceKitVariant]).
89+
public var substructure: [SourceKitVariant]? { return self[.substructure]?.array }
90+
/// Syntax map ([SourceKitVariant]).
91+
public var syntaxMap: [SourceKitVariant]? { return self[.syntaxMap]?.array }
92+
/// Type name (String).
93+
public var typeName: String? { return self[.typeName]?.string }
94+
/// Inheritedtype ([SourceKitVariant])
95+
public var inheritedtypes: [SourceKitVariant]? { return self[.inheritedtypes]?.array }
96+
}
97+
98+
// MARK: - Accessors for SwiftDocKey
99+
extension SourceKitVariant {
100+
public static func annotatedDeclaration(_ variant: SourceKitVariant) -> String? {
101+
return variant[.annotatedDeclaration]?.string
102+
}
103+
104+
public static func bodyLength(_ variant: SourceKitVariant) -> Int? {
105+
return variant[.bodyLength]?.int
106+
}
107+
108+
public static func bodyOffset(_ variant: SourceKitVariant) -> Int? {
109+
return variant[.bodyOffset]?.int
110+
}
111+
112+
public static func diagnosticStage(_ variant: SourceKitVariant) -> String? {
113+
return variant[.diagnosticStage]?.string
114+
}
115+
116+
public static func filePath(_ variant: SourceKitVariant) -> String? {
117+
return variant[.filePath]?.string
118+
}
119+
120+
public static func fullXMLDocs(_ variant: SourceKitVariant) -> String? {
121+
return variant[.fullXMLDocs]?.string
122+
}
123+
124+
public static func kind(_ variant: SourceKitVariant) -> SourceKitVariant? {
125+
return variant[.kind]
126+
}
127+
128+
public static func length(_ variant: SourceKitVariant) -> Int? {
129+
return variant[.length]?.int
130+
}
131+
132+
public static func name(_ variant: SourceKitVariant) -> String? {
133+
return variant[.name]?.string
134+
}
135+
136+
public static func nameLength(_ variant: SourceKitVariant) -> Int? {
137+
return variant[.nameLength]?.int
138+
}
139+
140+
public static func nameOffset(_ variant: SourceKitVariant) -> Int? {
141+
return variant[.nameOffset]?.int
142+
}
143+
144+
public static func offset(_ variant: SourceKitVariant) -> Int? {
145+
return variant[.offset]?.int
146+
}
147+
148+
public static func substructure(_ variant: SourceKitVariant) -> [SourceKitVariant]? {
149+
return variant[.substructure]?.array
150+
}
151+
152+
public static func syntaxMap(_ variant: SourceKitVariant) -> [SourceKitVariant]? {
153+
return variant[.syntaxMap]?.array
154+
}
155+
156+
public static func typeName(_ variant: SourceKitVariant) -> String? {
157+
return variant[.typeName]?.string
158+
}
159+
160+
public static func inheritedtypes(_ variant: SourceKitVariant) -> [SourceKitVariant]? {
161+
return variant[.inheritedtypes]?.array
162+
}
163+
}
164+
59165
// MARK: - ExpressibleByStringLiteral
60166
extension SourceKitVariant: ExpressibleByStringLiteral {
61167
public init(stringLiteral value: String) {
@@ -334,26 +440,6 @@ extension SourceKitVariant {
334440
}
335441
}
336442

337-
// MARK: - SwiftDocKey
338-
extension SourceKitVariant {
339-
var annotatedDeclaration: String? { return self[.annotatedDeclaration]?.string }
340-
var bodyLength: Int? { return self[.bodyLength]?.int }
341-
var bodyOffset: Int? { return self[.bodyOffset]?.int }
342-
var diagnosticStage: String? { return self[.diagnosticStage]?.string }
343-
var filePath: String? { return self[.filePath]?.string }
344-
var fullXMLDocs: String? { return self[.fullXMLDocs]?.string }
345-
var kind: SourceKitVariant? { return self[.kind] }
346-
var length: Int? { return self[.length]?.int }
347-
var name: String? { return self[.name]?.string }
348-
var nameLength: Int? { return self[.nameLength]?.int }
349-
var nameOffset: Int? { return self[.nameOffset]?.int }
350-
var offset: Int? { return self[.offset]?.int }
351-
var substructure: [SourceKitVariant]? { return self[.substructure]?.array }
352-
var syntaxMap: [SourceKitVariant]? { return self[.syntaxMap]?.array }
353-
var typeName: String? { return self[.typeName]?.string }
354-
var inheritedtypes: [SourceKitVariant]? { return self[.inheritedtypes]?.array }
355-
}
356-
357443
// MARK: - Custom
358444
extension SourceKitVariant {
359445
var attributes: [SourceKitVariant]? { return self["key.attributes"]?.array }

0 commit comments

Comments
 (0)