Skip to content

Commit

Permalink
Use the proper setter name for boolean properties.
Browse files Browse the repository at this point in the history
  • Loading branch information
mhdhejazi committed Aug 7, 2020
1 parent 6348b37 commit ab9a257
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
10 changes: 8 additions & 2 deletions Sources/Dynamic/Dynamic.swift
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,14 @@ public class Dynamic: CustomDebugStringConvertible, Loggable {
let resolved = resolve()
log(.end)

let setter = "set" + (name.first?.uppercased() ?? "") + name.dropFirst()
Dynamic(resolved, memberName: setter)(value)
var setterName: String
if name.count > 2, name.hasPrefix("is"), name[name.index(name.startIndex, offsetBy: 2)].isUppercase {
setterName = "set" + name.dropFirst(2)
} else {
setterName = "set" + (name.first?.uppercased() ?? "") + name.dropFirst()
}

Dynamic(resolved, memberName: setterName)(value)
}

private func callMethod(_ selector: String, with arguments: [Any?] = []) {
Expand Down
5 changes: 5 additions & 0 deletions Tests/DynamicTests/DynamicTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ final class DynamicTests: XCTestCase {
let progress = ObjC.NSProgress.progressWithTotalUnitCount(100)
progress.completedUnitCount = 50
XCTAssertEqual(progress.fractionCompleted, 0.5, "Setting numeric properties")

let queue = ObjC.NSOperationQueue()
XCTAssertFalse(queue.isSuspended!)
queue.isSuspended = true
XCTAssertTrue(queue.isSuspended!, "Setting boolean properties with 'is' prefix")
}

func testBlocks() {
Expand Down

0 comments on commit ab9a257

Please sign in to comment.