From dc19da52df9963c9e22aea63212d14538c599d36 Mon Sep 17 00:00:00 2001 From: Yishi Lin Date: Thu, 30 Mar 2017 23:44:24 +0800 Subject: [PATCH] Fix a bug when value is empty (updated) - Fix a bug introduced in ba20d084e4d6a548e7e1dfe273240c6fcee74f25 --- pass/Models/Password.swift | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pass/Models/Password.swift b/pass/Models/Password.swift index a908d2b..8c01939 100644 --- a/pass/Models/Password.swift +++ b/pass/Models/Password.swift @@ -99,14 +99,17 @@ class Password { // return a key-value pair from the line // key might be nil, if there is no ":" in the line static private func getKeyValuePair(from line: String) -> (key: String?, value: String) { - let items = line.characters.split(separator: ":", maxSplits: 1, omittingEmptySubsequences: true).map(String.init) - var key : String? + let items = line.characters.split(separator: ":", maxSplits: 1, omittingEmptySubsequences: false).map{String($0).trimmingCharacters(in: .whitespaces)} + var key : String? = nil var value = "" - if items.count == 1 { - key = items[0] - } else if items.count == 2 { - key = items[0] - value = items[1].trimmingCharacters(in: .whitespaces) + if items.count == 1 || (items[0].isEmpty && items[1].isEmpty) { + // no ":" found, or empty on both sides of ":" (e.g., " : ") + value = line + } else { + if !items[0].isEmpty { + key = items[0] + } + value = items[1] } return (key, value) }