         case .OtherError(let msg):
             return msg
         }
+    }
+
+    public var description: String {
+        return self.descriptionWithValueParser(ValueParser())
     }
 
     static func fromError(e: ErrorType) -> ExtractError {

 DictParser extracts values from a [String: String] dictionary.
 */
public class DictParser {
    private let vp: ValueParser
    private let dict: [String: String]

    public init(dict: [String: String], valueParser: ValueParser = ValueParser()) {
        self.dict = dict

            }
        case let .StringMinLengthError(name, value, minLength):
            if let n = name {
                return "Key \(n) had value \(value), shorter than minimum length \(vp.integerFormatter.stringFromNumber(minLength)!)"
            } else {
                return "Value \(value) is shorter than minimum length \(vp.integerFormatter.stringFromNumber(minLength)!)"
            }
        case let .StringMaxLengthError(name, value, maxLength):
            if let n = name {
                return "Key \(n) had value \(value), longer than minimum length \(vp.integerFormatter.stringFromNumber(maxLength)!)"
            } else {
                return "Value \(value) is longer than minimum length \(vp.integerFormatter.stringFromNumber(maxLength)!)"
            }
        case let .RegexpError(name, value, regexp):
            if let n = name {
