Skip to content

Commit

Permalink
Swiftlint
Browse files Browse the repository at this point in the history
  • Loading branch information
rhummelmose committed May 19, 2016
1 parent 7840c00 commit 919a055
Show file tree
Hide file tree
Showing 35 changed files with 630 additions and 468 deletions.
4 changes: 4 additions & 0 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
included: # paths to include during linting. `--path` is ignored if present.
- Source
disabled_rules: # rule identifiers to exclude from running
- line_length
33 changes: 33 additions & 0 deletions BluetoothKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -245,10 +245,12 @@
isa = PBXNativeTarget;
buildConfigurationList = C687E3A01B8B496400B702D8 /* Build configuration list for PBXNativeTarget "BluetoothKit iOS" */;
buildPhases = (
C69063981CECA84C00EF67A3 /* SwiftLint Autocorrect */,
C687E3931B8B496400B702D8 /* Sources */,
C687E3941B8B496400B702D8 /* Frameworks */,
C687E3951B8B496400B702D8 /* Headers */,
C687E3961B8B496400B702D8 /* Resources */,
C69063971CECA83B00EF67A3 /* SwiftLint */,
);
buildRules = (
);
Expand Down Expand Up @@ -342,6 +344,37 @@
};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
C69063971CECA83B00EF67A3 /* SwiftLint */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = SwiftLint;
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if which swiftlint > /dev/null; then\nswiftlint\nelse\necho \"Download SwiftLint: https://github.com/realm/SwiftLint\"\nfi";
};
C69063981CECA84C00EF67A3 /* SwiftLint Autocorrect */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "SwiftLint Autocorrect";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if which swiftlint > /dev/null; then\nswiftlint autocorrect --path Source\nelse\necho \"Download SwiftLint: https://github.com/realm/SwiftLint\"\nfi";
};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
C64CDDEE1BE4C46A00F72549 /* Sources */ = {
isa = PBXSourcesBuildPhase;
Expand Down
4 changes: 4 additions & 0 deletions Example/.swiftlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
included: # paths to include during linting. `--path` is ignored if present.
- Source
disabled_rules: # rule identifiers to exclude from running
- line_length
33 changes: 33 additions & 0 deletions Example/BKExample.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -414,10 +414,12 @@
isa = PBXNativeTarget;
buildConfigurationList = C67A22521B8C7D1B00CB74CE /* Build configuration list for PBXNativeTarget "BKExample (iOS)" */;
buildPhases = (
C69063961CECA4FA00EF67A3 /* SwiftLint Autocorrect */,
C67A223C1B8C7D1B00CB74CE /* Sources */,
C67A223D1B8C7D1B00CB74CE /* Frameworks */,
C67A223E1B8C7D1B00CB74CE /* Resources */,
C67653F91B8E2D3C00D43F8E /* Embed Frameworks */,
C690638C1CECA1FD00EF67A3 /* SwiftLint */,
);
buildRules = (
);
Expand Down Expand Up @@ -613,6 +615,37 @@
};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
C690638C1CECA1FD00EF67A3 /* SwiftLint */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = SwiftLint;
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if which swiftlint > /dev/null; then\nswiftlint\nelse\necho \"Download SwiftLint: https://github.com/realm/SwiftLint\"\nfi";
};
C69063961CECA4FA00EF67A3 /* SwiftLint Autocorrect */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "SwiftLint Autocorrect";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if which swiftlint > /dev/null; then\nswiftlint autocorrect --path Source\nelse\necho \"Download SwiftLint: https://github.com/realm/SwiftLint\"\nfi";
};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
C66982771CEB9FA100E23B57 /* Sources */ = {
isa = PBXSourcesBuildPhase;
Expand Down
4 changes: 2 additions & 2 deletions Example/Source/Extensions/NSData+NumberOfBytes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@
import Foundation

internal extension NSData {

internal class func dataWithNumberOfBytes(numberOfBytes: Int) -> NSData {
let bytes = malloc(numberOfBytes)
let data = NSData(bytes: bytes, length: numberOfBytes)
free(bytes)
return data
}

}
4 changes: 2 additions & 2 deletions Example/Source/Extensions/UIImage+Color.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import UIKit

internal extension UIImage {

internal class func imageWithColor(color: UIColor) -> UIImage {
let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
UIGraphicsBeginImageContext(rect.size)
Expand All @@ -36,5 +36,5 @@ internal extension UIImage {
UIGraphicsEndImageContext()
return image
}

}
1 change: 0 additions & 1 deletion Example/Source/Global/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,3 @@ internal class AppDelegate: UIResponder, UIApplicationDelegate {
}

}

12 changes: 6 additions & 6 deletions Example/Source/Global/Logger.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,24 @@ internal protocol LoggerDelegate: class {
}

internal struct Logger {

// MARK: Properties

internal static weak var delegate: LoggerDelegate?

internal static let loggingDateFormatter: NSDateFormatter = {
let formatter = NSDateFormatter()
formatter.dateFormat = "HH:mm:ss.SSS"
return formatter
}()

// MARK: Functions

internal static func log(string: String) {
let date = NSDate()
let stringWithDate = "[\(loggingDateFormatter.stringFromDate(date))] \(string)"
print(stringWithDate, terminator: "")
Logger.delegate?.loggerDidLogString(stringWithDate)
}

}
16 changes: 8 additions & 8 deletions Example/Source/Protocols/AvailabilityViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,30 +32,30 @@ internal protocol AvailabilityViewController: class, BKAvailabilityObserver {
}

internal extension AvailabilityViewController where Self: UIViewController {

// MARK: Properties

internal var heightForAvailabilityView: CGFloat {
return CGFloat(45)
}

// MARK: Functions

internal func applyAvailabilityView() {
view.addSubview(availabilityView)
availabilityView.snp_makeConstraints { make in
make.leading.trailing.bottom.equalTo(view)
make.height.equalTo(heightForAvailabilityView)
}
}

// MARK: BKAvailabilityObserver

internal func availabilityObserver(availabilityObservable: BKAvailabilityObservable, availabilityDidChange availability: BKAvailability) {
availabilityView.availabilityObserver(availabilityObservable, availabilityDidChange: availability)
}

internal func availabilityObserver(availabilityObservable: BKAvailabilityObservable, unavailabilityCauseDidChange unavailabilityCause: BKUnavailabilityCause) {
availabilityView.availabilityObserver(availabilityObservable, unavailabilityCauseDidChange: unavailabilityCause)
}
}
}
63 changes: 33 additions & 30 deletions Example/Source/View Controllers/CentralViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,29 @@ import BluetoothKit
import CoreBluetooth

internal class CentralViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, BKCentralDelegate, AvailabilityViewController, RemotePeripheralViewControllerDelegate {

// MARK: Properties

internal var availabilityView = AvailabilityView()

private var activityIndicator: UIActivityIndicatorView {
return activityIndicatorBarButtonItem.customView as! UIActivityIndicatorView

private var activityIndicator: UIActivityIndicatorView? {
guard let activityIndicator = activityIndicatorBarButtonItem.customView as? UIActivityIndicatorView else {
return nil
}
return activityIndicator
}

private let activityIndicatorBarButtonItem = UIBarButtonItem(customView: UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White))
private let discoveriesTableView = UITableView()
private var discoveries = [BKDiscovery]()
private let discoveriesTableViewCellIdentifier = "Discoveries Table View Cell Identifier"
private let central = BKCentral()

// MARK: UIViewController Life Cycle

internal override func viewDidLoad() {
view.backgroundColor = UIColor.whiteColor()
activityIndicator.color = UIColor.blackColor()
activityIndicator?.color = UIColor.blackColor()
navigationItem.title = "Central"
navigationItem.rightBarButtonItem = activityIndicatorBarButtonItem
applyAvailabilityView()
Expand All @@ -57,29 +60,29 @@ internal class CentralViewController: UIViewController, UITableViewDataSource, U
applyConstraints()
startCentral()
}

internal override func viewDidAppear(animated: Bool) {
scan()
}

internal override func viewWillDisappear(animated: Bool) {
central.interruptScan()
}

deinit {
try! central.stop()
_ = try? central.stop()
}

// MARK: Functions

private func applyConstraints() {
discoveriesTableView.snp_makeConstraints { make in
make.top.equalTo(snp_topLayoutGuideBottom)
make.leading.trailing.equalTo(view)
make.bottom.equalTo(availabilityView.snp_top)
}
}

private func startCentral() {
do {
central.delegate = self
Expand All @@ -92,7 +95,7 @@ internal class CentralViewController: UIViewController, UITableViewDataSource, U
print("Error while starting: \(error)")
}
}

private func scan() {
central.scanContinuouslyWithChangeHandler({ changes, discoveries in
let indexPathsToRemove = changes.filter({ $0 == .Remove(discovery: nil) }).map({ NSIndexPath(forRow: self.discoveries.indexOf($0.discovery)!, inSection: 0) })
Expand All @@ -109,33 +112,33 @@ internal class CentralViewController: UIViewController, UITableViewDataSource, U
}
}, stateHandler: { newState in
if newState == .Scanning {
self.activityIndicator.startAnimating()
self.activityIndicator?.startAnimating()
return
} else if newState == .Stopped {
self.discoveries.removeAll()
self.discoveriesTableView.reloadData()
}
self.activityIndicator.stopAnimating()
self.activityIndicator?.stopAnimating()
}, errorHandler: { error in
Logger.log("Error from scanning: \(error)")
})
}

// MARK: UITableViewDataSource

internal func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return discoveries.count
}

internal func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(discoveriesTableViewCellIdentifier, forIndexPath: indexPath)
let discovery = discoveries[indexPath.row]
cell.textLabel?.text = discovery.localName != nil ? discovery.localName : discovery.remotePeripheral.name
return cell
}

// MARK: UITableViewDelegate

internal func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.userInteractionEnabled = false
central.connect(remotePeripheral: discoveries[indexPath.row].remotePeripheral) { remotePeripheral, error in
Expand All @@ -150,9 +153,9 @@ internal class CentralViewController: UIViewController, UITableViewDataSource, U
self.navigationController?.pushViewController(remotePeripheralViewController, animated: true)
}
}

// MARK: BKAvailabilityObserver

internal func availabilityObserver(availabilityObservable: BKAvailabilityObservable, availabilityDidChange availability: BKAvailability) {
availabilityView.availabilityObserver(availabilityObservable, availabilityDidChange: availability)
if availability == .Available {
Expand All @@ -161,22 +164,22 @@ internal class CentralViewController: UIViewController, UITableViewDataSource, U
central.interruptScan()
}
}

// MARK: BKCentralDelegate

internal func central(central: BKCentral, remotePeripheralDidDisconnect remotePeripheral: BKRemotePeripheral) {
Logger.log("Remote peripheral did disconnect: \(remotePeripheral)")
self.navigationController?.popToViewController(self, animated: true)
}

// MARK: RemotePeripheralViewControllerDelegate

internal func remotePeripheralViewControllerWillDismiss(remotePeripheralViewController: RemotePeripheralViewController) {
do {
try central.disconnectRemotePeripheral(remotePeripheralViewController.remotePeripheral)
} catch let error {
Logger.log("Error disconnecting remote peripheral: \(error)")
}
}

}
Loading

0 comments on commit 919a055

Please sign in to comment.