Skip to content

Commit

Permalink
Merge pull request #2109 from spevans/pr_localizedscanner
Browse files Browse the repository at this point in the history
Scanner: Implement localizedScanner(with:)
  • Loading branch information
millenomi committed Apr 15, 2019
2 parents ad37c5d + d186547 commit f934c74
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
6 changes: 5 additions & 1 deletion Foundation/Scanner.swift
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,11 @@ open class Scanner: NSObject, NSCopying {
return stringLoc == stringLen
}

open class func localizedScannerWithString(_ string: String) -> AnyObject { NSUnimplemented() }
open class func localizedScanner(with string: String) -> Any {
let scanner = Scanner(string: string)
scanner.locale = Locale.current
return scanner
}
}

internal struct _NSStringBuffer {
Expand Down
16 changes: 15 additions & 1 deletion TestFoundation/TestScanner.swift
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,20 @@ class TestScanner : XCTestCase {
expectEqual($0.scanCharacters(from: finalSet), "👩🏻‍💻", "The up-to character set can be scanned immediately afterwards")
}
}


func testLocalizedScanner() throws {
let ds = Locale.current.decimalSeparator ?? "."
let string = "123\(ds)456"
let scanner = try (Scanner.localizedScanner(with: string) as? Scanner).unwrapped()
XCTAssertNotNil(scanner.locale)
var value: Decimal = 0
XCTAssertTrue(scanner.scanDecimal(&value))
XCTAssertEqual(value.description, "123.456")

// Check a normal scanner has no locale set
XCTAssertNil(Scanner(string: "foo").locale)
}

static var allTests: [(String, (TestScanner) -> () throws -> Void)] {
return [
("testScanFloatingPoint", testScanFloatingPoint),
Expand All @@ -480,6 +493,7 @@ class TestScanner : XCTestCase {
("testScanUpToString", testScanUpToString),
("testScanCharactersFromSet", testScanCharactersFromSet),
("testScanUpToCharactersFromSet", testScanUpToCharactersFromSet),
("testLocalizedScanner", testLocalizedScanner),
]
}
}
Expand Down

0 comments on commit f934c74

Please sign in to comment.