     /**
         Awaits a string of input
         - Parameter message: message to be printed before accepting input (e.g. "Name: ")
+        - Parameter secure: boolean defining that input should be hidden
     */
-    public static func awaitInput(message: String?) -> String {
+    public static func awaitInput(message: String?, secure: Bool = false) -> String {
         var input: String? = nil
         while input == nil {
             if let message = message {

//  Copyright (c) 2014 jakeheis. All rights reserved.
//

public class Input {
    
    //  MARK: - Public

    /**
        Awaits a string of convertible input; continues accepting input until the given input is successfully converted
        - Parameter message: message to be printed before accepting input (e.g. "Name: ")
        - Parameter secure: boolean defining that input should be hidden
        - Parameter conversion: closure attempting to convert the input to the desired output
    */
    public static func awaitInputWithConversion<T>(message: String?, secure: Bool = false, conversion: (_ input: String) -> T?) -> T {
        let input = awaitInputWithValidation(message: message, secure: secure) { (input) in
            return conversion(input) != nil
        }
        
