File tree Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Original file line number Diff line number Diff line change 1+ //===----------------------------------------------------------------------===//
2+ //
3+ // This source file is part of the Swift.org open source project
4+ //
5+ // Copyright (c) 2014 - 2024 Apple Inc. and the Swift project authors
6+ // Licensed under Apache License v2.0 with Runtime Library Exception
7+ //
8+ // See https://swift.org/LICENSE.txt for license information
9+ // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10+ //
11+ //===----------------------------------------------------------------------===//
12+
13+ import Foundation
14+
15+ /// An abstraction for sanitized values on a token.
16+ public struct Identifier {
17+ /// The sanitized `text` of a token.
18+ public let name : String
19+
20+ public init ( _ token: TokenSyntax ) {
21+ self . name = sanitizing ( token. text)
22+ }
23+ }
24+
25+ private func sanitizing( _ name: String ) -> String {
26+ guard name. contains ( " ` " ) else {
27+ return name
28+ }
29+
30+ return name. trimmingCharacters ( in: CharacterSet ( charactersIn: " ` " ) )
31+ }
Original file line number Diff line number Diff line change 1+ //===----------------------------------------------------------------------===//
2+ //
3+ // This source file is part of the Swift.org open source project
4+ //
5+ // Copyright (c) 2014 - 2024 Apple Inc. and the Swift project authors
6+ // Licensed under Apache License v2.0 with Runtime Library Exception
7+ //
8+ // See https://swift.org/LICENSE.txt for license information
9+ // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
10+ //
11+ //===----------------------------------------------------------------------===//
12+
13+ import SwiftSyntax
14+ import XCTest
15+
16+ class IdentifierTests : XCTestCase {
17+ public func testInit( ) {
18+ let basicToken = TokenSyntax ( stringLiteral: " sometoken " )
19+ XCTAssertEqual ( Identifier ( basicToken) . name, " sometoken " )
20+
21+ let backtickedToken = TokenSyntax ( stringLiteral: " `backtickedtoken` " )
22+ XCTAssertEqual ( Identifier ( backtickedToken) . name, " backtickedtoken " )
23+ }
24+ }
You can’t perform that action at this time.
0 commit comments