Skip to content
This repository was archived by the owner on Jun 17, 2018. It is now read-only.

Commit ba4e67d

Browse files
committed
Delete PageValidator
1 parent a2e6e3a commit ba4e67d

File tree

2 files changed

+52
-63
lines changed

2 files changed

+52
-63
lines changed

Pod/Classes/PagingMenuController.swift

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public extension PagingMenuControllerDelegate {
2525
internal let MinimumSupportedViewCount = 1
2626
internal let VisiblePagingViewNumber = 3
2727

28-
open class PagingMenuController: UIViewController, PagingValidator {
28+
open class PagingMenuController: UIViewController {
2929
weak public var delegate: PagingMenuControllerDelegate? {
3030
didSet {
3131
guard let menuView = menuView else { return }
@@ -520,3 +520,54 @@ extension PagingMenuController: ViewCleanable {
520520
}
521521
}
522522
}
523+
524+
// MARK: Validator
525+
526+
extension PagingMenuController {
527+
fileprivate func validate(_ options: PagingMenuControllerCustomizable) {
528+
validateDefaultPage(options)
529+
validateContentsCount(options)
530+
validateInfiniteMenuItemNumbers(options)
531+
}
532+
533+
fileprivate func validateContentsCount(_ options: PagingMenuControllerCustomizable) {
534+
switch options.componentType {
535+
case .all(let menuOptions, let pagingControllers):
536+
guard menuOptions.itemsOptions.count == pagingControllers.count else {
537+
raise("number of menu items and view controllers doesn't match")
538+
return
539+
}
540+
default: break
541+
}
542+
}
543+
544+
fileprivate func validateDefaultPage(_ options: PagingMenuControllerCustomizable) {
545+
let maxCount: Int
546+
switch options.componentType {
547+
case .pagingController(let pagingControllers): maxCount = pagingControllers.count
548+
case .all(_, let pagingControllers):
549+
maxCount = pagingControllers.count
550+
case .menuView(let menuOptions): maxCount = menuOptions.itemsOptions.count
551+
}
552+
553+
guard options.defaultPage >= maxCount || options.defaultPage < 0 else { return }
554+
555+
raise("default page is invalid")
556+
}
557+
558+
fileprivate func validateInfiniteMenuItemNumbers(_ options: PagingMenuControllerCustomizable) {
559+
guard case .all(let menuOptions, _) = options.componentType,
560+
case .infinite = menuOptions.displayMode else { return }
561+
guard menuOptions.itemsOptions.count < VisiblePagingViewNumber else { return }
562+
563+
raise("number of view controllers should be more than three with Infinite display mode")
564+
}
565+
566+
fileprivate var exceptionName: String {
567+
return "PMCException"
568+
}
569+
570+
fileprivate func raise(_ reason: String) {
571+
NSException(name: NSExceptionName(rawValue: exceptionName), reason: reason, userInfo: nil).raise()
572+
}
573+
}

Pod/Classes/Protocols/PagingValidator.swift

Lines changed: 0 additions & 62 deletions
This file was deleted.

0 commit comments

Comments
 (0)