0001    //
0002    //  ConsoleEntryValidator.swift
0003    //  AskerValidator
0004    //
0005    //  Created by Omar Abdelhafith on 02/11/2015.
0006    //  Copyright © 2015 Omar Abdelhafith. All rights reserved.
0007    //
0008    
0009    
0010    protocol AskerValidator
AgreeSettings.swift:10
class AgreeSettings: AskerValidator {
Ask.swift:50
func getValidatedString<T: ArgConvertibleType, W: AskerValidator where W.Item == T>(validator: W) -> T {
Ask.swift:56
func getValidatedStringWithConfirmation<T: ArgConvertibleType, W: AskerValidator where W.Item == T>(validator: W) -> T {
AskerValidator.swift:19
func askForValidatedItem<T, W: AskerValidator where W.Item == T>
AskSettings.swift:46
extension AskSettings: AskerValidator {
ChooseSettings.swift:109
extension ChooseSettings: AskerValidator {
{ 0011 typealias Item
Ask.swift:50
func getValidatedString<T: ArgConvertibleType, W: AskerValidator where W.Item == T>(validator: W) -> T {
Ask.swift:56
func getValidatedStringWithConfirmation<T: ArgConvertibleType, W: AskerValidator where W.Item == T>(validator: W) -> T {
AskerValidator.swift:16
    func validatedItem(forString string: String) -> Item
AskerValidator.swift:19
func askForValidatedItem<T, W: AskerValidator where W.Item == T>
0012 0013 func invalidItemMessage
AskerValidator.swift:25
        guard let invalidMessage = validator.invalidItemMessage(validatedValue) else {
(string: String?) -> String? 0014 func newItemPromptMessage
AskerValidator.swift:30
        PromptSettings.print(validator.newItemPromptMessage(), terminator: "")
() -> String 0015 0016 func validatedItem
AskerValidator.swift:35
    return validator.validatedItem(forString: validatedValue)
(forString string: String) -> Item 0017 } 0018 0019 func askForValidatedItem
Agree.swift:20
    let validatedValue = askForValidatedItem(originalValue: value, validator: settings)
Ask.swift:52
    return askForValidatedItem(originalValue: stringOrEmpty, validator: validator)
Ask.swift:60
        let answer = askForValidatedItem(originalValue: stringOrEmpty, validator: validator)
Choose.swift:86
    return askForValidatedItem(originalValue: stringRead, validator: settings)
<T, W: AskerValidator where W.Item == T> 0020 (originalValue value: String, validator: W) -> T { 0021 0022 var validatedValue: String = value 0023 0024 while true { 0025 guard let invalidMessage = validator.invalidItemMessage(validatedValue) else { 0026 break 0027 } 0028 0029 PromptSettings.print(invalidMessage) 0030 PromptSettings.print(validator.newItemPromptMessage(), terminator: "") 0031 0032 validatedValue = readStringOrEmpty() 0033 } 0034 0035 return validator.validatedItem(forString: validatedValue) 0036 } 0037