-
Notifications
You must be signed in to change notification settings - Fork 233
/
Copy pathRequest+CodeComplete.swift
49 lines (42 loc) · 1.82 KB
/
Request+CodeComplete.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//
// Request+CodeCompletion.swift
// SourceKittenFramework
//
// Created by Zheng Li on 25/11/2017.
// Copyright © 2017 SourceKitten. All rights reserved.
//
import Foundation
// swiftlint:disable nesting
extension Request {
/// A `codecomplete` request by passing in the file name, contents, offset
/// for which to generate code completion options and array of compiler arguments.
public struct CodeComplete: RequestType {
public struct Source {
public let sourceFile: String?
public let sourceText: String?
public static func path(_ path: String) -> Source {
return Source(sourceFile: path, sourceText: nil)
}
public static func text(_ text: String, name: String? = nil) -> Source {
return Source(sourceFile: name, sourceText: text)
}
}
public let source: Source
public let offset: Int64
public let arguments: [String]
public func sourcekitObject() -> sourcekitd_object_t {
let requestBuilder = RequestBuilder(type: .codeComplete)
requestBuilder[.sourceFile] = source.sourceFile
requestBuilder[.sourceText] = source.sourceText
requestBuilder[.offset] = offset
requestBuilder[.compilerArgs] = arguments
return requestBuilder.makeRequest()
}
}
public static func codeCompletionRequest(file: String, contents: String, offset: Int64, arguments: [String]) -> Request {
return .codeComplete(source: .text(contents, name: file), offset: offset, arguments: arguments)
}
public static func codeComplete(source: CodeComplete.Source, offset: Int64, arguments: [String]) -> Request {
return Request(type: CodeComplete(source: source, offset: offset, arguments: arguments))
}
}